1

我是Java的初学者。我在java中有以下方法:

public void filter(Long time_start, Long time_stop){
     ArrayList<Long> time = new ArrayList<Long>();
     ArrayList<Integer> stream = new ArrayList<Integer>();
     ArrayList<Integer> cpuid = new ArrayList<Integer>();
     ArrayList<Integer> token = new ArrayList<Integer>();
}

我从用户那里获得了time_startand的输入time_stop,它被传递给了这个方法。ArrayList 时间包含用户输入的值(time_starttime_stop)。我想要做的是:对于每个给定的开始和结束时间...查看时间 ArrayList 并返回time, stream, cpuid and token从 t​​ime_start 到 time_end 的开始。time ArrayList 中的每个值都是唯一的。

我该怎么做呢?我知道 Java 中有 Map 接口,但它只能接受一个键作为输入。我想查找一系列值并输出与该范围相对应的所有字段。

谁能告诉我正确和最好的方法吗?time、cpuid 等的 ArrayLists 有时可能非常大。

4

2 回答 2

3

您可以使用java.util.NavigableMap. 它具有允许检索范围、近似匹配以及您需要的一切的方法。

您应该定义一个类来表示一个对象中每个事件的时间、流、cpuid 和令牌值的元组,而不是使用并行列表。我现在会打电话给这堂课Data

要获取范围为time_startto的键的条目time_stop,您可以这样做:

NavigableMap<Long,Data> myMap;

public NavigableMap filter(Long time_start, Long time_stop){
    return myMap.subMap(time_start, time_stop);
}
于 2013-06-14T11:48:50.767 回答
3

使用 Java 优秀的 OO 特性并创建类似的东西

public class DataPoint {
   startTime;
   endTime;
   stream;
   cpuId;
   token;
}

并将其存储在您的列表中。是的,那不会编译,我把实际的实现留给你。

于 2013-06-14T11:49:59.633 回答