#数据分类处理#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#