我有一个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);
}
当用户按下2时,他们应该收到某个单词重复的次数。重复的字符串不必彼此相邻。例如。如果用户键入“ Bear”(熊)三次,“ Owl”(猫头鹰)两次,“ Cat”(猫)一次,则输出应遵循以下内容:
Bear - 3.
Owl - 2.
Cat - 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);