java中在对象类中搜索对象而不比较所有对象的设计模式

java中在对象类中搜索对象而不比较所有对象的设计模式,java,Java,我想在java中搜索类对象集合中的特定对象,而不比较所有属性和所有对象。我在搜索键中有单个属性值 其中一种方法是基于自定义哈希函数创建对象的哈希映射(键是所有属性值的串联字符串,如“attr1 | attr2 | attr3”) 在java中还有其他更好的方法吗?如果您使用的是java 8,请使用streams: 这将返回一个包含搜索结果的集合 yourCollection.stream() .filter( it -> it.attr1.equals(keyAttr1) &

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

其中一种方法是基于自定义哈希函数创建对象的哈希映射(键是所有属性值的串联字符串,如“attr1 | attr2 | attr3”)


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

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

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的函数。

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