如何计算ArrayList中重复单词的数量(没有Hash)

时间:2017-04-27 18:20:55

标签: java arrays search arraylist count

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

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

当用户按下2时,他们应该接收某个单词重复的次数。重复的字符串不必彼此相邻。例如。如果用户输入&#34;熊&#34;三次,&#34;猫头鹰&#34;两次和#34; Cat&#34;一次,输出应该是:

Bear - 3.
Owl - 2.
Cat - 1.

我该怎么做?

1 个答案:

答案 0 :(得分:1)

使用相同的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;
    }
});

然后在foreach循环中,您可以计算每个元素出现的次数:

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