ArrayList<String> ArrayTemp = new ArrayList<>();
for(int x=0;x<ABC.size();x++){
for(int y=0;y<ArrayTemp.size()+1;y++){
if(!ABC.get(x).equals(ArrayTemp.get(y))){
ArrayTemp.add(ABC.get(x));
CountTemp.add(Count[x]);
}
}
}
上面显示了我的代码,我将比较数组ABC的每个元素以删除元素的副本。同时我也需要Count值。基本上包含和结果将如下所示: 含有:
ABC Count
aaa 9
aaa 9
aab 8
aba 8
aaa 9
aab 8
我需要的结果是:
ArrayTemp CountTemp
aaa 9
aab 8
aba 8
此外,我试图使用
设置ArrayTemp = new HashSet(); 设置CountTemp = new HashSet();
此代码似乎不同步我的包含。任何人都可以帮我解决这个问题吗?无论代码使用哪个,只要这可以帮助我。随意回答我,我将尝试提供的每个编码。非常感谢你。
答案 0 :(得分:1)
查看Java
中的Map。这就是你在寻找的东西。将唯一String
作为键并将计数作为值。
例如:
List<String> ArrayTemp = new ArrayList<>();
Map<String, Integer> countMap = new HashMap<>();
for (String key : ArrayTemp) {
Integer count = countMap.get(key);
if(count==null){
countMap.put(key,1);
}else {
countMap.put(key,count+1);
}
}
答案 1 :(得分:0)
这样的事情可能有所帮助:
Map<String, Integer> countMap = new HashMap<>();
for(int x=0; x < ABC.size(); x++){
countMap.put(ABC.get(x), Count[x]);
}
如果您想要汇总计数,您可以尝试类似的方法(假设您已经填充了Count):
Map<String, Integer> countMap = new HashMap<>();
for(int x=0; x < ABC.size(); x++){
if (countMap.containsKey(ABC.get(x))) {
countMap.put(ABC.get(x), countMap.get(ABC.get(x)) + Count[x]);
} else {
countMap.put(ABC.get(x), Count[x]);
}
}
当然,如果你想通过使用地图(字数统计)开始整个事情 - 这里是link。
答案 2 :(得分:0)
为什么不选择快速解决方案而不是重新发明轮子。 您还可以使用apache commons集合从列表中删除重复项:
<dependency>
<groupId>commons-collections</groupId>
<artifactId>commons-collections</artifactId>
<version>3.2.1</version>
</dependency>
ArrayList<String> duplicatedList =new ArrayList<String>(0);
duplicatedList.addAll(Arrays.asList("aaa","aaa","bbb","ccc","aab","aaa","cca","ccc","bbb") );
SetUniqueList uniqueList = SetUniqueList.decorate(duplicatedList);
System.out.println(uniqueList.toString());
Apache Commons Collections的一行解决方案; - )