我是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);
        }
所以就像上面看到的,我实现了一个NavigableMapwith并且我能够使用NavigableMapTreeMap中的方法过滤给定的范围。subMap但是我现在有一个问题,time_enter包含一些重复的键,所以当我使用时TreeMap,这些值会被最新添加的重复值覆盖。我明白这是如何TreeMap工作的。我也试过使用ConcurrentSkipListMap,但结果是一样的。
ConcurrentSkipListMap和之间的实际区别是什么TreeMap??是否有可能NavigableMap使用TreeMapor来实现,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);
     }
    