首先,我不知道我是否有效地组织我的数据,我的想法是我有一对键/值。
public static class Freq implements Comparable {
String term;
double frequency;
public Freq( String term, double frequency ) {
this.term = term;
this.frequency = frequency;
}
public int compareTo(Object o) {
if(this.frequency == ((Freq) o).frequency)
return 0;
else if(this.frequency > ((Freq) o).frequency)
return 1;
else
return -1;
}
现在,我将这些对象存储在一个集合中:List<Freq> bla = new ArrayList<Freq>()
并对其进行排序。
我有兴趣搜索特定对象,例如来自集合的Freq.name = 'Bar'
,已排序。我该怎么办?或者我必须迭代整个集合。
还是有其他更有效的方法吗?
答案 0 :(得分:3)
您应该使用关联的集合,例如TreeMap
,它会自动对其元素进行排序。如果您希望有时根据名称进行搜索,有时甚至可以根据频率进行搜索,可以将元素同时保存在两个地图中,并使用合适的元素进行查找。
或者,如果由于某种原因你想坚持使用排序列表,你可以使用Collections.binarySearch()
来查找其中的元素。
答案 1 :(得分:0)
您可以使用JFilter http://code.google.com/p/jfilter/
JFilter是一个简单而高性能的开源库,用于查询Java bean的集合。
主要功能