删除数组中的重复字符串

时间:2017-06-07 07:17:34

标签: java duplicates

有一次比较array(1)compareto(array(1))这是一个问题吗?数量鸟是数组中元素的数量。我想删除数组中的重复字符串。它是可以修复还是应该接近。

for (i = 0; i <= amountBirds - 1; i++)
{
    for (x = 1; x <= amountBirds; x++)
    {
        duplicate = birdArray[i].compareTo(birdArray[x]);

        if (duplicate == 0)
        {
            birdArray[i] = birdArray[x];
        }
    }
}

3 个答案:

答案 0 :(得分:2)

试试这个:

birdArray = new HashSet<String>(Arrays.asList(birdArray)).toArray(new String[0]);

答案 1 :(得分:2)

尝试Set或LinkedHashSet。将您的arraylist转换为Set,它会自动从List中删除副本,因为Set不允许重复值。但请记住,它是一个集合而不是列表。

答案 2 :(得分:2)

您可以在使用compareTo方法之前包含if检查

if ( i != x ) {
        duplicate = birdArray[i].compareTo(birdArray[x]);
}

或者您可以在Java Collection库中使用Set。此方法不允许插入重复条目。因此,在插入本身时,您可以避免重复。

或者你保持birdArray原样。并使用Set作为中介来插入和删除重复项。

Set<String> birdSet = new LinkedHashSet<String>(); //to keep the order of the birds
for (i = 0; i < amountBirds; i++)
{
    birdSet.add (birdArray[i]);
}
birdArray = Arrays.copyOf(birdSet.toArray(), birdSet.size(), String[].class);