【问题标题】:Design pattern for searching object in class of objects without comparing all objects in java用于在对象类中搜索对象而不比较java中的所有对象的设计模式
【发布时间】:2017-07-07 09:24:47
【问题描述】:

我想在 java 中的类对象集合中搜索特定对象,而不比较所有属性和所有对象。我在搜索键中有单独的属性值。

其中一种方法是根据自定义散列函数创建对象的 HashMap(键将是所有属性值的串联字符串,例如“attr1|attr2|attr3”。

在java中还有其他更好的方法吗?

【问题讨论】:

  • collection.stream().filter(matchingWith(SearchTerm)).findAny()

标签: java


【解决方案1】:

如果您使用的是 Java 8,请使用流: 这将返回一个包含您的搜索结果的集合

yourCollection.stream()
    .filter( it -> it.attr1.equals(keyAttr1) &&  it.attr2.equals(keyAttr2) && ...)
    .collect( Collectors.toList());

或者如果你只是想对所有匹配做一些事情

yourCollection.stream()
    .filter( it -> it.attr1.equals(keyAttr1) &&  it.attr2.equals(keyAttr2) && ...)
    .forEach( it -> do something with it );

在较低的版本中,您可以自己实现一个过滤器函数,它接受一个集合和一个匹配器函数作为参数,并遍历您的集合并过滤掉从匹配器函数返回 true 的那些。

【讨论】:

    猜你喜欢
    • 2015-11-05
    • 2023-03-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多