public static void main(String[] args) throws IOException {
Map results = new HashMap();
InputStream is = new FileInputStream(new File(
"C:\\Documents and Settings\\Administrator\\桌面\\1.txt"));
BufferedReader br = new BufferedReader(new InputStreamReader(is, "gbk")); //读入文件 防止乱码
String line = null;
while ((line = br.readLine()) != null) {
dealLine(line, results);//封装数据到map中
}
Set s = results.keySet();
List<User> l = sortResults(results);
for (User l1 : l) {
System.out.println(l1.getName() + l1.getNum());
}
}
private static List sortResults(Map map) {
//将map中的值放入list中并反序
List v = new ArrayList<>();
v.addAll(map.values());
Collections.sort(v, Collections.reverseOrder());
Set s = map.keySet();// 取键
boolean b = true;
List m = new ArrayList<>();
//依次取值
for (int i = 0; i < v.size(); i++) {
for (Object o : s) {
//判断map中键的值与之一样的键 若相同则进入
if (map.get(o.toString()) == v.get(i)) {//判断是否已将满足条件的值放入list<USER>中
for (Object t : m) {
if (o.toString() == ((User) t).getName()) {
b = false;
}
}
//若未放入则放入
if (b) {
m.add(new User(o.toString(), (int) v.get(i)));
}
}
}
}
return m;
}
// 把数据封装到map集合中
private static void dealLine(String line, Map map) {
if (!"".equals(line.trim())) {
String[] result = line.split(",");
if (result.length == 3) {
String name = result[1];
Integer value = (Integer) map.get(name);
if (value == null)
value = 0;
map.put(name, value + 1);
}
}
}
}
class User {
private String name;
private int num;
public User(String name, int num) {
super();
this.name = name;
this.num = num;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getNum() {
return num;
}
public void setNum(int age) {
this.num = age;
}
}
从类似如下的文本文件中读取出所有的姓名,并打印出重复的姓名和重复的次数,并按重复次数排序
最新推荐文章于 2022-02-02 18:13:29 发布