假设我有:
Set<MyObj> set = new HashSet<>();
set.add(new MyObj("myParam1","myParam2","myParam3"));
set.add(new MyObj("myParam11","myParam22","myParam33"));
set.add(new MyObj("myParam111","myParam222","myParam333"));.....
public class MyObj {
private String p1;
private String p2;
private String p3;
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
MyObj myObj = (MyObj) o;
return Objects.equals(getP1(), myObj.getP1()) &&
Objects.equals(getP2(), myObj.getP2());
}
@Override
public int hashCode() {
return Objects.hash(getP1(), getP2());
}
}
我想不创建新对象,通过检索元素 p1 & p2
示例:我得到 2 个字符串: "myParam1","myParam2"
我想要结果: MyObj("myParam1","myParam2","myParam3")
我不想要这个:
set.stream().filter(a->a.equals(new MyObj("myParam1","myParam2",null))).findFirst()
相反,我想要像地图(运行时 O(1))之类的东西,而不使用它。
慕斯王
开心每一天1111
相关分类