挿入順序を維持しながら、(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);
}
しかし、セットが
[b、c、a、b、d]を出力するため、このコンパレータは#failであるように見えます。bが2回そこにある場合、そのセットはありません。
私が見なければならない他の選択肢はありますか?