私はJavaの初心者です。私は以下のような方法を持っています:
public void time_filter(Long t1, Long t2){
NavigableMap<Long, Operations_enter> time_map = new TreeMap<Long, Operations_enter>();
for(int i=0; i< tm.size();i++){
Operations_enter op = new Operations_enter();
op.cpuid_enter = cpu.get(i);
op.func_enter = stt.get(i);
op.time_enter = tm.get(i);
op.src_enter = tok.get(i);
time_map.put(op.time_enter, op);
}
for(Map.Entry<Long, Operations_enter> entry: time_map.subMap(t1, true, t2, true).entrySet()){
Integer time_func = entry.getValue().func_enter;
System.out.println(" Filtered function numbers corresponding to given time range is" + time_func);
}
NavigableMap
上記のように、 withを実装し、NavigableMapTreeMap
のメソッドを使用して特定の範囲をフィルタリングできます。subMap
しかし、私は今問題を抱えています. にtime_enter
はいくつかの重複キーが含まれているため、TreeMap
. それがどのように機能するかを理解していますTreeMap
。私も使ってみConcurrentSkipListMap
ましたが、結果は同じでした。
ConcurrentSkipListMap
との実際の違いは何TreeMap
ですか?? NavigableMap
また、またはのいずれTreeMap
かで実装するConcurrentSkipListMap
と同時に、重複する値をに含める可能性はありNavigableMap
ますか?
編集 コードは次のようになります。
NavigableMap<Long, Operations_enter> time_map = new TreeMap<Long, Operations_enter>(new Comparator<Long>() {
public int compare(Long o1, Long o2) {
return o1.equals(o2) ? 1 : o1.compareTo(o2);
}
});
for(int i=0; i< tm.size();i++){
Operations_enter op = new Operations_enter();
op.cpuid_enter = cpu.get(i);
op.func_enter = stt.get(i);
op.time_enter = tm.get(i);
op.src_enter = tok.get(i);
time_map.put(op.time_enter, op);
}
for(Map.Entry<Long, Operations_enter> entry: time_map.subMap(t1, true, t2, true).entrySet()){
Integer time_func = entry.getValue().func_enter;
System.out.println(" Filtered function numbers corresponding to given time range is" + time_func);
}