私は、挿入の順序を維持し、concururently(ConcurrentModificationExceptionをスローしないように)変更可能なSet実装が必要です。
私は自分のコンパレータとConcurrentSkipListSet
を使用してみました - サンプルコード:挿入順序を維持するコンカレントセットを実装する方法
public static void main(String[] str){
ConcurrentSkipListSet set = new ConcurrentSkipListSet(new Comparator() {
public int compare(Object o1, Object o2) {
if(o1.equals(o2)){
return 0;
}
return -1;
}
});
set.add("d");
set.add("b");
set.add("a");
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
set.add("c");
set.add("b");
System.out.println(set);
set.remove("b");
System.out.println(set);
}
しかし、このコンパレータは、設定された印刷物ため#failで表示されます。
[B、C、B、D]。そのbがそこに2回あるならば、そのセットはありません。
他の選択肢はありますか?
これに対する答えは、http://stackoverflow.com/questions/5290790/is-there-any-concurrent-linkedhashset-in-jdk6-0-or-other-librariesを聞いている人が後にしているものです。 – Tnem