java 类集,ArrayList和HashMap应用
题目
程序运行时输入如下内容:
李文,北京
李希,北京
张小小,河南
王文,河北
董信,北京
张坤,北京
万三,江西
戴天,河南
庞大,湖北
彭克,浙江
最后屏幕输出如下内容:
北京,4(董信,李文,李希,张坤)
河南,2(戴天,张小小)
河北,1(王文)
江西,1(万三)
湖北,1(庞大)
浙江,1(彭克)
采用ArrayList实现
package demo;
import java.util.ArrayList;
import java.util.Scanner;
public class ArrayListTest {
ArrayList<String> name;
public String province;
public int num;
public static void main(String[] args) {
ArrayList<ArrayListTest> tests = new ArrayList<ArrayListTest>();
Scanner in = new Scanner(System.in);
String str;
while (!(str = in.nextLine()).equals("")) {
String name = "", province = "";
String strs[] = str.split(",");
name = strs[0];
province = strs[1];
//System.out.println("name:" + name + ", province:" + province);
int pos1 = -1;
for (int i = 0; i < tests.size(); i++) {
if (tests.get(i).province.equals(province)) pos1 = i;
}
if (pos1 == -1) {
ArrayListTest term = new ArrayListTest();
term.province = province;
term.num = 1;
term.name = new ArrayList<>();
term.name.add(name);
tests.add(term);
}
else {
ArrayListTest term = tests.get(pos1);
term.name.add(name);
term.num++;
}
}
for (int i = 0; i < tests.size(); i++) {
ArrayListTest term = tests.get(i);
System.out.print(term.province + "," + term.num + "(");
for (int j = 0; j < term.name.size(); j++) {
String name = term.name.get(j);
if (j != 0) System.out.print(",");
System.out.print(name);
}
System.out.print(")\n");
}
}
}
采用HashMap实现
package demo;
import java.util.HashMap;
import java.util.Scanner;
public class HashMapTest {
public static void main(String[] args) {
HashMap<String, String> mapName = new HashMap<>();
HashMap<String, Integer> mapNum = new HashMap<>();
Scanner in = new Scanner(System.in);
String str;
while (!(str = in.nextLine()).equals("")) {
String name = "", province = "";
String strs[] = str.split(",");
name = strs[0];
province = strs[1];
if (mapName.containsKey(province)) {
mapName.put(province, mapName.get(province) + "," + name);
mapNum.put(province, mapNum.get(province) + 1);
}
else {
mapName.put(province, name);
mapNum.put(province, 1);
}
}
for (String term : mapNum.keySet())
System.out.println(term + "," + mapNum.get(term) + "(" + mapName.get(term) + ")");
}
}