亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

是否有任何選項可以通過其屬性從 Set/HashSet 中檢索元素

是否有任何選項可以通過其屬性從 Set/HashSet 中檢索元素

斯蒂芬大帝 2021-07-08 18:01:29
假設我有: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))之類的東西,而不使用它。
查看完整描述

3 回答

?
慕斯王

TA貢獻1864條經驗 獲得超2個贊

set.stream()

   .filter(x -> x.getMyParam1().equals("myParam1") && x.getMyParam2().equals("myParam2"))

   .findFirst();

但是在findFirst這里想一下……您正在使用 a Set,所以它沒有意義。為了更清楚地說明這一點:


    Set<String> set = new HashSet<>();

    set.add("hello");

    set.add("world");

    set.add("jug");


    System.out.println(set.stream().findFirst().get()); // world


    // add them

    IntStream.range(0, 100_000)

            .mapToObj(i -> "" + i)

            .forEachOrdered(set::add);


    // remove them immediatly after


    IntStream.range(0, 100_000)

            .mapToObj(i -> "" + i)

            .forEachOrdered(set::remove);


    System.out.println(set.stream().findFirst().get()); // hello


查看完整回答
反對 回復 2021-07-23
?
開心每一天1111

TA貢獻1836條經驗 獲得超13個贊

那么為什么不做某事。像這樣在過濾器內部:

a-> "myParam1".equals(a.getP1()) && "myParam2".equals(a.getP2())


查看完整回答
反對 回復 2021-07-23
  • 3 回答
  • 0 關注
  • 171 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號