删除数组中的重复元素并将其存储到另一个数组

时间:2015-12-11 04:21:44

标签: java

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

此代码似乎不同步我的包含。任何人都可以帮我解决这个问题吗?无论代码使用哪个,只要这可以帮助我。随意回答我,我将尝试提供的每个编码。非常感谢你。

3 个答案:

答案 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的一行解决方案; - )