Java 删除数组中的重复字符串

Java 删除数组中的重复字符串,java,duplicates,Java,Duplicates,在某一点上,它将数组(1)与数组(1)进行比较这是一个问题吗?Amount birds是数组中元素的数量。我正在尝试删除数组中的重复字符串。它是可修复的还是我应该重新接近 for (i = 0; i <= amountBirds - 1; i++) { for (x = 1; x <= amountBirds; x++) { duplicate = birdArray[i].compareTo(birdArray[x]); if (d

在某一点上,它将数组(1)与数组(1)进行比较这是一个问题吗?Amount birds是数组中元素的数量。我正在尝试删除数组中的重复字符串。它是可修复的还是我应该重新接近

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];
        }
    }
}
对于(i=0;i请尝试以下操作:

birdArray = new HashSet<String>(Arrays.asList(birdArray)).toArray(new String[0]);
birdArray=newhashset(Arrays.asList(birdArray)).toArray(新字符串[0]);
试试这个:

birdArray = new HashSet<String>(Arrays.asList(birdArray)).toArray(new String[0]);
birdArray=newhashset(Arrays.asList(birdArray)).toArray(新字符串[0]);

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

尝试Set或LinkedHashSet。将您的arraylist转换为Set,它将自动从列表中删除重复项,因为Set不允许重复值。

尝试Set或LinkedHashSet不允许重复值。但请记住它是一个集合而不是一个列表。

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

if ( i != x ) {
        duplicate = birdArray[i].compareTo(birdArray[x]);
}
或者您可以使用Java集合库中的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);
或者保持birdArray的原样,并使用集合作为中介来插入和删除重复项

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);
Set birdSet=new LinkedHashSet();//保持鸟类的秩序
对于(i=0;i
在使用compareTo方法之前,您可以包括一个if检查

if ( i != x ) {
        duplicate = birdArray[i].compareTo(birdArray[x]);
}
或者您可以使用Java集合库中的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);
或者保持birdArray的原样,并使用集合作为中介来插入和删除重复项

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);
Set birdSet=new LinkedHashSet();//保持鸟类的秩序
对于(i=0;i
为什么不使用
compareTo
,而使用
indexOf
查找现有元素为什么不使用
Set
?为什么不使用Java集合对象而不是
数组
?我已经多年没有接触Java了。但我相信我以前使用过
indexOf
。看看这里,而不是
compareTo
,为什么不使用
indexOf
来查找现有的元素为什么不使用
Set
?为什么不使用Java集合对象而不是
数组呢?我已经多年没有接触Java了。但我相信我曾经使用过
indexOf
来查找现有的元素。看看这里,实际上我将birdArray设置为一个全局变量,我不确定该怎么说,这里是:publicstaticstring[]birdArray=newstring[50];只需将上面的代码放在循环比较的位置。然后在imports中添加这行---->import java.util.HashSet;import java.util.Arrays;:o它做了一些事情,我会继续努力的谢谢,它基本上删除了数组中的一个元素,还有一个空数组元素。但同时,如果我ter one.ya,HasSet不能有您需要的副本。嗨,我实际上将birdArray设置为一个全局变量,我不确定该如何使用它,这里是:public static String[]birdArray=new String[50];只需将上面的代码放在循环比较的位置。然后在imports中添加这行---->import java.util.HashSet;import java.util.Arrays;:o它做了一些事情,我会继续努力的谢谢,它基本上删除了数组中的一个元素,还有一个空数组元素。但同时,如果我第一,是的,哈塞特不能有你需要的副本。我想我需要更多的研究从未听说过set或hashset啊哈…但是谢谢你我想我需要更多的研究从未听说过set或hashset啊哈…但是谢谢你啊我现在明白你的意思了,我喜欢第一个选项我会尝试想想啊哈我现在明白你的意思了,我喜欢第一个选项我会试着想想啊哈