#数据分类处理#treemap 集合类 lambda表达式
数据分类处理
https://www.nowcoder.com/practice/9a763ed59c7243bd8ab706b2da52b7fd
import java.util.*;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
String iString = in.nextLine();
String rString = in.nextLine();
String[] split = iString.split(" ");
// 一次性创建足够大小的集合,避免扩容带来性能损耗
ArrayList<Integer> iList = new ArrayList<>(Integer.parseInt(split[0]));
for (int i = 1; i < split.length; i++) {
iList.add(Integer.valueOf(split[i]));
}
split = rString.split(" ");
// r -> i中包含r的索引集合,treemap自带去重和排序,
TreeMap<Integer, List<Integer>> rMap = new TreeMap<>();
for (int i = 1; i < split.length; i++) {
rMap.put(Integer.parseInt(split[i]), new ArrayList<>());
}
ArrayList<Integer> result = new ArrayList<>(); // 结果集合
rMap.forEach((r, list) -> { // 遍历所有的r
for (int i = 0; i < iList.size(); i++) { // 遍历所有的i
if (isContains(iList.get(i), r)) { // 如果i包含r
list.add(i); // 将i的索引添加到r的集合中
}
}
// 遍历结束,将结果添加到结果集合
if (list.size() > 0) {
// r , 个数 , i1的索引 , i1 , i2的索引 , i2 .............
result.add(r);
result.add(list.size());
list.forEach(index -> {
result.add(index);
result.add(iList.get(index));
});
}
});
// 打印结果
System.out.print(result.size());
result.stream().map(x -> " " + x).forEach(System.out::print);
System.out.println();
}
// 判断i是否包含r
private static boolean isContains(int i, int r) {
// r = 23; i = 231
return String.valueOf(i).contains(String.valueOf(r));
}
}
#treeMap#
查看8道真题和解析
