Java 如何删除列表中的重复项并将列表复制到另一个列表中

Java 如何删除列表中的重复项并将列表复制到另一个列表中,java,Java,我有一个项目列表,需要删除重复的项目,然后将该列表复制到另一个列表中。问题是我无法将该列表复制到另一个列表中 代码 ..... private List mylist = new ArrayList(); ..... LinkedHashSet hs = new LinkedHashSet(); hs.addAll(mylist); mylist.clear(); mylist.addAll(hs); MyClass.getI

我有一个项目列表,需要删除重复的项目,然后将该列表复制到另一个列表中。问题是我无法将该列表复制到另一个列表中

代码

    .....
    private List mylist = new ArrayList();
    .....

    LinkedHashSet hs = new LinkedHashSet();
    hs.addAll(mylist);
    mylist.clear();
    mylist.addAll(hs); 

    MyClass.getItems().clear();
    MyClass.setItems(mylist);
MyClass.java

  .....
   private List Items = new ArrayList();

   public void setItems(List myItems) { 
        for (int i = 0; i < myItems.size(); i++) {    <<This loop shows the items
            System.out.println(myItems.get(i));
        }
        this.Items.clear();
        this.Items.addAll(myItems);
        for (int i = 0; i < Items.size(); i++) {  << this loop does not show anything
           System.out.println(Items.get(i));
        }
    }
你可以用一个。这将保留插入顺序并确保没有重复

对于第二个问题,您是否将任何内容添加到列表中。你的代码是有效的

List<Integer> mylist = new ArrayList<Integer>();
    mylist.add(3);
    mylist.add(3);


    HashSet hs = new HashSet();
    hs.addAll(mylist);
    mylist.clear();
    mylist.addAll(hs); 

    System.out.println(mylist.size()); //prints 1
    System.out.println(hs.size());// prints 1
List mylist=new ArrayList();
添加(3);
添加(3);
HashSet hs=新的HashSet();
hs.addAll(mylist);
mylist.clear();
mylist.addAll(hs);
System.out.println(mylist.size())//印刷品1
System.out.println(hs.size());//印刷品1
对已编辑问题的回复:

他们两人似乎都很好地把名单打印出来了

public class Tmp {  

private List<Integer> Items = new ArrayList<Integer>();

public void setItems(List<Integer> myItems) { 
    for (int i = 0; i < myItems.size(); i++) {    //<<This loop shows the items
        System.out.println(myItems.get(i));
    }
    this.Items.clear();
    this.Items.addAll(myItems);
    System.out.println();
    for (int i = 0; i < Items.size(); i++) {  //<< this loop also shows the item
        System.out.println(Items.get(i));
    }
}
public static void main(String[] args) {
    Tmp t = new Tmp();
    List<Integer> myList = new ArrayList<Integer>();
    myList.add(3);
    myList.add(4);

    t.setItems(myList);


}
公共类Tmp{
私有列表项=新的ArrayList();
公共无效集合项(列出myItems){
对于(inti=0;i
对于第二个问题,您是否向列表中添加了任何内容。您的代码有效

List<Integer> mylist = new ArrayList<Integer>();
    mylist.add(3);
    mylist.add(3);


    HashSet hs = new HashSet();
    hs.addAll(mylist);
    mylist.clear();
    mylist.addAll(hs); 

    System.out.println(mylist.size()); //prints 1
    System.out.println(hs.size());// prints 1
List mylist=new ArrayList();
添加(3);
添加(3);
HashSet hs=新的HashSet();
hs.addAll(mylist);
mylist.clear();
mylist.addAll(hs);
System.out.println(mylist.size());//打印1
System.out.println(hs.size());//打印1
对已编辑问题的回复:

他们两人似乎都很好地把名单打印出来了

public class Tmp {  

private List<Integer> Items = new ArrayList<Integer>();

public void setItems(List<Integer> myItems) { 
    for (int i = 0; i < myItems.size(); i++) {    //<<This loop shows the items
        System.out.println(myItems.get(i));
    }
    this.Items.clear();
    this.Items.addAll(myItems);
    System.out.println();
    for (int i = 0; i < Items.size(); i++) {  //<< this loop also shows the item
        System.out.println(Items.get(i));
    }
}
public static void main(String[] args) {
    Tmp t = new Tmp();
    List<Integer> myList = new ArrayList<Integer>();
    myList.add(3);
    myList.add(4);

    t.setItems(myList);


}
公共类Tmp{
私有列表项=新的ArrayList();
公共无效集合项(列出myItems){

对于(int i=0;iLinkedHashSet
而不是
HashSet
。您不能将一个列表复制到另一个列表是什么意思?如代码所示,当我将列表作为setItems的参数发送时,setItems中的for循环不显示这些项目,似乎这些项目没有发送到某些r的setItems函数easons.要解决第一个问题,只需使用
LinkedHashSet
而不是
HashSet
。您不能将一个列表复制到另一个列表是什么意思?如代码所示,当我将列表作为setItems的参数发送时,setItems中的for循环不会显示这些项目,似乎这些项目没有发送到某些r的setItems函数easons.how如何解决第二个问题?要将集合复制到已创建的列表中吗?您使用的add all函数如何处理hashset,它不像链接的hashlist那样维护顺序。当您在列表中调用add all时,它将调用您在迭代器中传递的集合,以迭代集合添加eaclistsetItems函数的h对象在另一个类中,当我将mylist传递给函数时,它将被清空。是否有其他线程正在编辑列表?我使用了您提供的示例代码,无法复制错误。是否还有其他信息可以提供如何解决第二个问题?是否要将该集复制到已经创建了列表?您在hashset中使用的add all函数如何?hashset不像链接的hashlist那样维护顺序。当您在列表中调用add all时,它将调用您传入的集合迭代器来迭代集合。当我传递t时,将每个对象添加到listsetItems函数在另一个类中他将我的列表中的函数清空。是否有其他线程正在编辑列表?我使用了您提供的示例代码,无法复制错误。您还可以提供其他信息吗