Java 如何从列表中删除所有重复项

Java 如何从列表中删除所有重复项,java,list,duplicates,Java,List,Duplicates,我试图从列表中删除所有重复的元素,而不使用set,元素应该保持有序 我的代码工作不正常,我假设有for循环的问题,因为它不是到处都是 任何建议都会有帮助 代码: public class DuplicatesCheck { public static void main(String[] args) { System.out.println("Enter elements:"); Scanner scan = new Scanner(System

我试图从列表中删除所有重复的元素,而不使用set,元素应该保持有序

我的代码工作不正常,我假设有for循环的问题,因为它不是到处都是

任何建议都会有帮助

代码:

public class DuplicatesCheck {

    public static void main(String[] args) {
          System.out.println("Enter elements:");
          Scanner scan = new Scanner(System.in);
          String input = scan.nextLine();
          List<String> elements = new ArrayList<String>(Arrays.asList(input.split(",")));
          List<String> elements2 = new ArrayList<String>();
          elements2 = elements;

         for(int i = 0; I < elements.size() - 1 ; i++ ) {
             for(int j = i + 1; j < elements.size(); j++) {             
                if(elements.get(i).equals(elements.get(j))) {                           
                    elements2.remove(j);                     
                }
             }
         }
         System.out.println(elements2);
    }
}
公共类重复项检查{
公共静态void main(字符串[]args){
System.out.println(“输入元素:”);
扫描仪扫描=新扫描仪(System.in);
字符串输入=scan.nextLine();
列表元素=新的ArrayList(Arrays.asList(input.split(“,”));
List elements2=新的ArrayList();
元素2=元素;
对于(int i=0;i
最简单的方法是从流API使用:

List<String> distinct = elements.stream()
    .distinct()
    .collect(Collectors.toList())
List distinct=elements.stream()
.distinct()
.collect(收集器.toList())

最简单的方法是从流API使用:

List<String> distinct = elements.stream()
    .distinct()
    .collect(Collectors.toList())
List distinct=elements.stream()
.distinct()
.collect(收集器.toList())

不要与索引交互。因为一旦删除元素,elements.size()将减少1。因此j++将跳过一个元素。因此,仅当未删除时,才使用foreach或增量j进行迭代。如果删除j,则只指向下一个元素。因为当一个元素从列表中移除时,其余的元素会向左移动


希望有帮助。如果您需要,我可以发布完整的解决方案。

不要与索引交互。因为一旦删除元素,elements.size()将减少1。因此j++将跳过一个元素。因此,仅当未删除时,才使用foreach或增量j进行迭代。如果删除j,则只指向下一个元素。因为当一个元素从列表中移除时,其余的元素会向左移动


希望有帮助。如果您需要,我可以发布完整的解决方案。

非常感谢!所以,可能就像我在谷歌上查到的,因为这对我来说是新的,它应该是这样的:for(stringi:elements){for(stringj:elements){if(I.equals(j){elements2.remove(elements.indexOf(j));正如你们所知,这是一种非常基本的解决方法,大多数是初学者可以理解的。但理想的方法是使用正确的数据结构来实现这些。非常感谢!所以我可能在google上查看过,因为这对我来说是新的,它应该类似于:for(String I:elements){for(String j:elements){if(i.equals(j){elements2.remove(elements.indexOf(j));正如你们所知,这是一种非常基本的求解方法,大多数是初学者可以理解的。但理想的方法是使用正确的数据结构来实现这些。