Java 问题:按字母顺序删除字符串arraylist中的重复项

Java 问题:按字母顺序删除字符串arraylist中的重复项,java,arraylist,duplicates,Java,Arraylist,Duplicates,下面是我从arraylist(按字母顺序排序)中删除重复项的函数: publicstaticvoidremoveduplicate(arraylistarray){ 对于(int i=0;i

下面是我从arraylist(按字母顺序排序)中删除重复项的函数:

publicstaticvoidremoveduplicate(arraylistarray){
对于(int i=0;i
但不知怎的,仍然有一些重复,我已经找到了其他方法来删除arraylist中的重复项,它们和我的完全一样。所以现在我绊倒得很厉害。如果你能帮我找到解决问题的办法,我将不胜感激。顺便说一句,这里是一个示例,当我在arraylist上单击函数RemovedUpplicate(array)后打印它时,输出是什么:

A 能力 给予 获得 成人 之后 再一次 反对 年龄 年龄 艾伯特 疏远 全部的
几乎

在遍历列表时修改列表通常会产生负面影响

试试这个

public static List<String> removeDuplicate(ArrayList<String> array) {
  return array.stream().distinct().collect(Collectors.toList());
}
移除的公共静态列表副本(ArrayList数组){
返回array.stream().distinct().collect(Collectors.toList());
}

现有方法应使用从列表末尾开始的循环:

publicstaticvoidremoveduplicate(arraylistarray){
对于(int i=array.size()-1;i>0;i--){
if(array.get(i).equalsIgnoreCase((array.get(i-1))){
数组。删除(i);
}
}
}
如果输入列表部分排序,可使用
集合
跟踪重复项:

publicstaticvoidremoveduplicate(arraylistarray){
Set=newhashset();
对于(int i=0;i< /代码>如果可能,请考虑更改方法以返回一个新的列表,该列表已删除了重复项,并且输入参数不变。(如果需要,方法的调用方可以重新分配结果。)如果这种方法可行,那么可以使用具有distinct的流。为什么不只分配给另一个列表,而不添加已经存在的元素呢?在这个集合和lambda的世界中,像数组一样遍历列表似乎很奇怪。你可以试试这个:我刚刚使用了你的函数,它工作得很好,有什么问题吗?示例输入结果如下输出:[A,能力,符合,获得,成人,之后,再次,反对,年龄,阿尔伯特,疏远,所有,几乎]@Rubydesic,nice catch:)唯一重复的条目
AGE
被OP的片段成功删除,将索引重置为0对于排序列表来说似乎是多余的。OP希望进行不区分大小写的比较
public static List<String> removeDuplicate(ArrayList<String> array) {
  return array.stream().distinct().collect(Collectors.toList());
}