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函数在另一个类中他将我的列表中的函数清空。是否有其他线程正在编辑列表?我使用了您提供的示例代码,无法复制错误。您还可以提供其他信息吗