文件格式如下:
1,s,28
2,a,353,a,284,b,355,s,286,a,357,c,288,d,359,c,2810,c,2811,c,2812,c,2813,c,28代码的思路如下:
首先取出每行的内容,并放入一个list中,然后取出每一行的name分别放入set和list中,计算出重复的个数,最后进行排序。
package jisuan;import java.io.BufferedReader;import java.io.FileReader;import java.io.InputStreamReader;import java.util.ArrayList;import java.util.Collections;import java.util.HashSet;import java.util.List;import java.util.Set;public class StringTest { public static void main(String[] args) throws Exception { InputStreamReader is = new FileReader("C:\\test\\b.txt"); BufferedReader br = new BufferedReader(is); Listlist = new ArrayList (); String str = ""; // 读取文件,把取出的每一行放入到list中 while ((str = br.readLine()) != null) { list.add(str); } // 使用set存放name 不包括重复,使用list 存放所有的name Set set = new HashSet (); List listname = new ArrayList (); for (String s : list) { String[] sa = s.split(","); set.add(sa[1]); listname.add(sa[1]); } // 获取重复name的数目 List Plist = new ArrayList
(); for (String setstr : set) { int count = 0; for (int j = 0; j < listname.size(); j++) { if (setstr.equals(listname.get(j))) { count++; } } if (count > 1) { Plist.add(new P(count, setstr)); // 这个是对于Comparable 接口的 Collections.sort(Plist); } } for (P p : Plist) { System.out.println(p.count + "===" + p.name); } }}// 创建一个类,并排序class P implements Comparable
{ int count; String name; public P(int count, String name) { this.count = count; this.name = name; } @Override public int compareTo(P o) { if (this.count > o.count) { return 1; } else { return -1; } }}
输出的结果是:2===s3===a6===c