Java 如何计算ArrayList中重复的单词数(无哈希)

Java 如何计算ArrayList中重复的单词数(无哈希),java,arrays,search,arraylist,count,Java,Arrays,Search,Arraylist,Count,我有一个ArrayList,用户可以通过输入“1”,然后在程序运行时输入字符串来填充字符串: ArrayList<String> inStrings = new ArrayList<String>(); //(I left out the main while) if (programCTRL == 1) { System.out.println("Enter your keyword!"); inStrings.add(scan.nextLine()

我有一个
ArrayList
,用户可以通过输入“1”,然后在程序运行时输入字符串来填充字符串:

ArrayList<String> inStrings = new ArrayList<String>();

//(I left out the main while)

if (programCTRL == 1) {
    System.out.println("Enter your keyword!");
    inStrings.add(scan.nextLine());
    System.out.println(inStrings);
}

如何执行此操作?

使用相同的
ArrayList
而不使用任何其他支持结构,您可以对元素进行排序:

Collections.sort(inStrings, new Comparator<String>() {
    @Override
    public int compare(String s1, String s2) {
        return s1.compareToIgnoreCase(s2); // if you don't care about uppercase and lowercase;
    }
});

您可以维护一个映射,只要在重新输入字符串时更新条目即可。您没有指定重复的
字符串是否必须相邻。如果他们没有,你可以使用
Collections\frequency
。好吧,我试试Collections方法!有一个问题(可能也是一个noob问题)您用来对元素进行排序的比较器,它是标准类库的一部分吗?@VicW是的。。如果答案解决了您的问题,那么您可以接受它。它基本上解决了问题,最后一个元素不在输出中,示例中的“Cat”丢失。@VicW是的,您是对的,您需要在循环后打印最后一个元素。。尝试新代码
Collections.sort(inStrings, new Comparator<String>() {
    @Override
    public int compare(String s1, String s2) {
        return s1.compareToIgnoreCase(s2); // if you don't care about uppercase and lowercase;
    }
});
String lastElement = null;
int counter = 0;
for(String s : inStrings){
  if(lastElement == null){
    lastElement = s;
    counter = 1;
    continue;
  }
  if(!s.equals(lastElement)){
    System.out.println(lastElement + ": " + counter);
    lastElement = s;
    counter = 1;
  }
  else
    counter++;
}

if(lastElement != null)
   System.out.println(lastElement + ": " + counter);