java - java中如何对得到的不同数据项对应的计数进行排序

标签 java sorting

我需要一个从多个文件读取并根据用户输入的日期范围显示报告的程序。文件中的数据如下所示:

[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.

我需要如下输出:

Computer Name   No.of disconnects
A                   4
B                   2
C                   1

即特定计算机名称的断开连接数,按与输入的日期范围相对应的降序排列。 我尝试这样做,但我无法获得计算机的综合计数,也无法进行排序。我得到的输出是:

计算机名称断开连接次数

A               1
A               1
A               2
B               1
B               2
C               1
C               1

请帮我解决这个问题。这是我写的代码

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]);
    }
}

最佳答案

不要边打印边打印,而是尝试在 map 中累积数据(键:计算机名称,值:断开连接的次数)。然后对 map 键进行排序并打印最终总计。

关于java - java中如何对得到的不同数据项对应的计数进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9949103/

相关文章:

mongodb - 如何在 sails js 框架中执行不区分大小写的排序?

node.js - 如何使用 dynamoose 进行排序

java - java中的synchronized关键字是如何实现的?

java - POI Java Excel解决方案——缩进值

java - Html 特殊字符和 Javascript

java - Spring JDBC MySQL/MariaDB 数据在第 1 行的 'start_date' 列被截断

java - 无法在 doInbackground() 方法中执行 AlertDialog

python - 如何在Python中对相关的字符串列表和数字列表进行排序?

python - 如何在 Python 中使用基数排序按字母顺序对(很长)对象列表进行排序?

php - 在 PHP 中根据另一个数组的值对数组进行排序