Can not count how many number of unique date are available in every part of string

I divided my string in three part using newline (‘n’). The output that i want to achieve: count how many number of unique date are available in every part of string.
According to below code, first part contains two unique date, second part contains two and third part contains three unique date. So the output should be like this: 2,2,3,
But after run this below code i get this Output: 5,5,5,5,1,3,1,
How do i get Output: 2,2,3,
Thanks in advance.

        String strH;
        String strT = null;
        StringBuilder sbE = new StringBuilder();
        String strA = "2021-03-02,2021-03-02,2021-03-02,2021-03-02,2021-03-02,2021-03-11,2021-03-11,2021-03-11,2021-03-11,2021-03-11," + 'n' +
                "2021-03-07,2021-03-07,2021-03-07,2021-03-07,2021-03-07,2021-03-15,2021-03-15,2021-03-15,2021-03-15,2021-03-15," + 'n' +
                "2021-03-02,2021-03-09,2021-03-07,2021-03-09,2021-03-09,";

        String[] strG = strA.split("n");
        for(int h=0; h<strG.length; h++){
            strH = strG[h];
            String[] words=strH.split(",");
            int wrc=1;
            for(int i=0;i<words.length;i++) {
                for(int j=i+1;j<words.length;j++) {
                    if(words[i].equals(words[j])) {
                        wrc=wrc+1;
                        words[j]="0";
                    }
                }
                if(words[i]!="0"){
                    sbE.append(wrc).append(",");
                    strT = String.valueOf(sbE);
                }
                wrc=1;
            }
        }
        Log.d("TAG", "Output: "+strT);

Answer

I would use a set here to count the duplicates:

String strA = "2021-03-02,2021-03-02,2021-03-02,2021-03-02,2021-03-02,2021-03-11,2021-03-11,2021-03-11,2021-03-11,2021-03-11" + "n" +
              "2021-03-07,2021-03-07,2021-03-07,2021-03-07,2021-03-07,2021-03-15,2021-03-15,2021-03-15,2021-03-15,2021-03-15" + "n" +
              "2021-03-02,2021-03-09,2021-03-07,2021-03-09,2021-03-09";
String[] lines = strA.split("n");
List<Integer> counts = new ArrayList<>();
for (String line : lines) {
    counts.add(new HashSet<String>(Arrays.asList(line.split(","))).size());
}
System.out.println(counts);  // [2, 2, 3]

Note that I have done a minor cleanup of the strA input by removing the trailing comma from each line.

Leave a Reply

Your email address will not be published. Required fields are marked *