1

繰り返しのものを削除してから、そのリストを別のリストにコピーする必要があるアイテムのリストがあります。問題は、リストを他のリストにコピーできないことです。

コード

    .....
    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));
        }
    }

望ましい結果

mylist  >> a,b,c,a,d,c
change to a,b,c,d
then copy to items
items >> a,b,c,d
4

1 に答える 1

1

を使用できますLinkedHashSet。これにより、挿入順序が保持され、重複がなくなります。

問題番号 2 については、何かをリストに追加しています。あなたが持っているコードは動作します

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

編集された質問への回答:

どちらもリストをうまく印刷しているようです

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);


}

}

これらのコードは両方とも同じクラスにあり、両方のリスト変数は同じ arrayList インスタンスを指しています。その場合、片方で clear を呼び出すと、両方のリストがクリアされます (両方の変数が同じリストを指しているため)

于 2013-05-22T00:16:02.817 に答える