1

文字列を次の形式で出力しようとしています。ua, login, login ---> ua, navigation, fault Average = 500 milliseconds. 2 つの文字列を という 1 つの文字列に格納し、keyStringそれを で区切られたハッシュマップに入れています"|"。次に、キーセットを繰り返し処理して、最初に述べた形式で取得するときに分割していますが、このように表示され---> ua, ctiq, export|ua, ctiq export, transfer Average = 600 millisecondsます。何か案は?

  public static void ProcessLines(Map<String, NumberHolder> uaCount,String firstLine, String secondLine) throws ParseException
   {
    String [] arr1 = firstLine.split("-- ", 2);
    String [] arr2 = secondLine.split("-- ", 2);
    String str1 = arr1[1];
    String str2 = arr2[1];


    ......
    String keyString = str1 + "|" + str2;               
    NumberHolder hashValue = uaCount.get(keyString);
     if(hashValue == null)
     {
        hashValue = new NumberHolder();
        uaCount.put(keyString, hashValue);                      
     }
     hashValue.sumtime_in_milliseconds += diffMilliSeconds;
     hashValue.occurences++;

     public static class NumberHolder
     {
      public int occurences;
      public int sumtime_in_milliseconds;       
     }

印刷部分はこちら

 for(String str : uaCount.keySet())
    {
        String [] arr = str.split("|",2);

        long average = uaCount.get(str).sumtime_in_milliseconds / uaCount.get(str).occurences;

        //System.out.println(str);

        System.out.println(arr[0] + " ---> " + arr[1] + " Average = " + average + " milliseconds");
    }
4

1 に答える 1

1

split正規表現を使用して分割する場所を照合し、「RegEx」では|OR を意味します。リテラルとして使用するには、それ|をエスケープする必要があります。または、 を使用することもできます。試す\"\\"[|]

str.split("\\|",2);
于 2013-04-01T13:53:17.570 に答える