How to sort the count obtained corresponding to different data items in java
我需要一个从多个文件中读取并根据用户输入的日期范围显示报告的程序。文件中的数据如下:
1 2 3 | [C445] ComputerName:FRONTOFFICE UserID:YB Yenae Ball Station 7A LanId: | (11/23 17:01:55) | Client is disconnected from agent. [C445] ComputerName:FRONTOFFICE UserID:YB Yenae Ball Station 7C LanId: | (11/23 17:02:00) | Client is connected to agent. [C7AE] ComputerName:KCUTSHALL-PC UserID:GO kcutshall Station 9901 LanId: | (11/23 13:33:06 - 11/23 13:33:41)|Client is disconnected from agent. |
我需要如下输出:
1 2 3 4 |
即特定计算机名称的断开连接数,降序对应于输入的日期范围。我试过这样做,但我无法获得计算机的合并计数,也无法进行排序。我得到的输出是:
计算机名称断开的编号
1 2 3 4 5 6 7 | A 1 A 1 A 2 B 1 B 2 C 1 C 1 |
请帮我一下。这是我写的代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 | import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Enumeration; import java.util.zip.ZipEntry; import java.util.zip.ZipFile; import java.util.Scanner; import java.util.*; import java.text.*; import java.util.regex.Pattern; import java.util.regex.Matcher; public class ReadZip{ public static void main(String args[]) throws ParseException { try { Scanner input1=new Scanner(System.in); Scanner input2=new Scanner(System.in); System.out.println("Enter start date"); String userDate1=input1.nextLine(); System.out.println("Enter end date"); String userDate2=input2.nextLine(); DateFormat df = new SimpleDateFormat ("MM/dd"); Date d1=df.parse(userDate1); Date d2=df.parse(userDate2); ZipFile zf=new ZipFile("C:\\Users\\Engineeir\\Desktop\\QoS_logs.zip"); Enumeration entries=zf.entries(); BufferedReader input=new BufferedReader(new InputStreamReader( System.in)); while (entries.hasMoreElements()) { ZipEntry ze=(ZipEntry) entries.nextElement(); BufferedReader br=new BufferedReader(new InputStreamReader(zf.getInputStream(ze))); String line; String name;String compnames;int lines=0; while ((line=br.readLine())!=null) { String[] st=line.split("\\|",-1); if(st.length>1){ String dates=st[1]; String[] parts=dates.split("-"); SimpleDateFormat f=new SimpleDateFormat("(MM/dd"); String[] ob=parts[0].split(""); String finaldate=ob[1]; Date d3=f.parse(finaldate); if(d3.after(d1) && d3.before(d2)){ compnames=getName(st); if(line.contains("Client is disconnected from agent")==true) { //compnames=getName(st); lines++; } System.out.println(compnames+"\t"+lines);} else{break;} //System.out.println(compnames+"\t"+lines); } } } } catch (IOException e) { e.printStackTrace(); } } public static String getName(String[] st) { String[] name=st[0].split("\\:",-1); String[] comp=name[1].split("\",-1); return(comp[0]); } } |
不要一边打印一边在地图上累积数据(键:计算机名,值:断开的数目)。然后按地图键排序并打印最终总计。
尝试创建一个表示数据集的对象,创建这些数据集的列表以及一个
或者,将数据集放入像
请注意,如果要合并多个文件的数据,则必须获取任何以前创建的数据集,并将新文件的数据合并到这些数据集中(例如,如果当前文件包含