题解 | #数据分类处理#,差点没懵
数据分类处理
http://www.nowcoder.com/practice/9a763ed59c7243bd8ab706b2da52b7fd
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
while (scanner.hasNext()) {
int n = scanner.nextInt();
String[] i = new String[n];
for (int j = 0; j < n; j++) {
i[j] = scanner.next();
}
int m = scanner.nextInt();
TreeSet<Integer> r = new TreeSet<>();
for (int j = 0; j < m; j++) {
int nextInt = scanner.nextInt();
r.add(nextInt);
}
Iterator<Integer> iterator = r.iterator();
LinkedHashMap<TreeMap, List> linkedHashMap = new LinkedHashMap<>();
int count = 0;
while (iterator.hasNext()) {
TreeMap<Integer, Integer> okAndNumber = new TreeMap<>();
ArrayList<TreeMap> list = new ArrayList<>();
Integer next = iterator.next();
String strR = String.valueOf(next);
for (int j = 0; j < i.length; j++) {
if (i[j].contains(strR)) {
TreeMap<Integer, Integer> indexAndValue = new TreeMap<>();
int key = Integer.parseInt(strR);
Integer value = okAndNumber.get(key);
// 数字和数量
if (value != null) {
okAndNumber.put(key, ++value);
} else {
count += 2;
okAndNumber.put(key, 1);
}
// I的索引和值
indexAndValue.put(j, Integer.parseInt(i[j]));
list.add(indexAndValue);
count += 2;
}
}
if(okAndNumber.size() != 0){
linkedHashMap.put(okAndNumber, list);
}
}
String s = count + " ";
for (Map.Entry<TreeMap, List> entry : linkedHashMap.entrySet()) {
TreeMap keyTree = entry.getKey();
for (Object o : keyTree.keySet()) {
int key1 = (int) o;
int value1 = (int) keyTree.get(key1);
s += key1 + " " + value1 + " ";
List list = entry.getValue();
for (int j = 0; j < list.size(); j++) {
TreeMap treeMap = (TreeMap) list.get(j);
for (Object o1 : treeMap.keySet()) {
int key2 = (int) o1;
int value2 = (int) treeMap.get(key2);
s += key2 + " " + value2 + " ";
}
}
}
}
System.out.println(s);
}
}
}