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”的所有产品

取决于您如何排序。您没有指定是按术语还是按频率排序。我是按频率排序的(请参阅compareTo方法),请不要使用散弹枪方法在堆栈溢出上发布。如果问题非常相似(几乎相同)准确答案可用于所有问题,投票以重复方式关闭,或标记,或留下评论。不要只发布答案。但是,如果问题不同,请根据问题定制答案。此外,如果您与JFilter项目有关联,您需要披露这一点。