java集合中的搜索对象
首先,我不知道我是否在有效地组织数据,我的想法是我有成对的键/值java集合中的搜索对象,java,collections,Java,Collections,首先,我不知道我是否在有效地组织数据,我的想法是我有成对的键/值 public static class Freq implements Comparable { String term; double frequency; public Freq( String term, double frequency ) { this.term = term; this.frequency = frequency; } public int c
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 bla=new ArrayList()
并对其进行排序
我感兴趣的是从已排序的集合中搜索特定对象,例如Freq.name='Bar'
。我该怎么做?或者我必须迭代整个集合
或者有其他更有效的方法来实现这一点吗?您应该使用关联的集合,如a,它可以自动对其元素进行排序。如果希望有时根据名称进行搜索,有时根据频率进行搜索,则可以同时将元素保留在两个贴图中,并使用合适的贴图进行查找 或者,如果出于某种原因,您想继续使用已排序的列表,您可以使用来查找其中的元素。您可以使用JFilter JFilter是一个简单而高性能的开源库,用于查询JavaBean的集合 主要特征
- 支持集合(java.util.collection、java.util.Map和数组)属性
- 在任何深度的集合中支持集合
- 支持内部查询
- 支持参数化查询
- 可以在短短100毫秒内过滤100万条记录
- 过滤器(查询)以简单的json格式给出,它类似于Mangodb查询。下面是一些例子。
- {“id”:{“$le”:“10”}
- 其中对象id属性小于等于10
- {“id”:{“$in”:[“0”,“100”]}
- 其中,对象id属性为0或100
- {“lineItems”:{“lineAmount”:“1”}
- 其中,参数化类型的lineItems集合属性的lineAmount等于1
- {“$and”:[{“id”:“0”},{“billingAddress”:{“city”:“DEL”}]}
- 其中id属性为0,billingAddress.city属性为DEL
- {“行项目”:{“税”:{“键”:{“代码”:“GST”},“值”:{“$gt”:“1.01”}} 其中,参数化类型的lineItems集合属性具有参数化类型的映射类型属性,其代码等于大于1.01的GST值
- {'$or':[{'code':'10'},{'skus':{'$and':[{'price':{'in':['20','40']},{'code':'RedApple'}}}
- 选择产品代码为10或sku价格为20和40且sku代码为“RedApple”的所有产品