How do I put only unique values into an array?

旧街凉风 提交于 2019-12-07 19:09:11

问题


node_marked_array.add(strings[0]);

for (int i = 0; i < strings.length; i++) {
    for (int a = 0; a < strings2.length; a = a + 2) {
        if (node_marked_array.get(i).equals(strings2[a])) {
            if (!node_marked_array.get(i).equals(strings2[a + 1])) {
                //    System.out.println("marked node: " + node_marked_array.get(i) + "=" + strings2[a] + ", added node " + strings2[a+1]);
                node_marked_array.add(strings2[a + 1]);
            }
        }
    }
}

I have an array named strings2 of elements each being:

1, 2, 1, 3, 2, 3, 2, 4, 3, 2, 5, 5, 2,

and my code is supposed to go through the array and if it matches for example any of the element that is in the array called strings: {1,2,3,4,5} with that of strings2 for each even element. It checks the i+1 element of the array above to see if the element is already added to the marked array, if it isn't then it adds it. However I am seeing duplicate values even with

if (!node_marked_array.get(i).equals(strings2[a + 1]))

output: 1 2 3 3 4 2 5 2 5 5


回答1:


Use Set. Array is the wrong data type for this problem.

It contains a .toArray() method that will give you back an array after you've constructed the set, if that is what you require.




回答2:


Use a Set. Starting from your code:

HashSet<String> noDuplicate = new HashSet<String>();
for(int i=0;i<strings.length;i++)
{
  for(int a=0;a<strings2.length;a++)
  {
    if(strings[i].equals(strings2[a]))
    {
      noDuplicate.add(strings[i]);
    }
  }
}

// And then if you need an array:
String[] noDupArray = new String[noDuplicate.size()];
noDuplicate.toArray(noDupArray);


来源:https://stackoverflow.com/questions/13710668/how-do-i-put-only-unique-values-into-an-array

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!