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