温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

java Set能放不同对象吗

发布时间:2026-10-25 20:07:27 来源:亿速云 阅读:88 作者:小樊 栏目:编程语言

可以的,Java 的 Set 可以存放不同的对象,只要这些对象不是“相等”的(根据 equals() 和 hashCode() 判断)。

关键点说明

  1. Set 不限制对象类型

    • Set 是接口,HashSet、TreeSet、LinkedHashSet 都可以放任意对象
    • 例如:
      Set set = new HashSet();
      set.add("abc");
      set.add(123);
      set.add(new Object());
      
      这是允许的(但一般不推荐,见第 3 点)
  2. 是否能“放进去”取决于是否重复

    • HashSet:根据 hashCode() + equals() 判断
    • TreeSet:根据 Comparable 或 Comparator 判断
    • 只要不是“相等的对象”,就能共存
  3. 推荐用泛型

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

    这样只能放 String,更安全、可读性更好

  4. 不同对象 but “逻辑相等” → 放不进去

    Set<String> set = new HashSet<>();
    set.add(new String("a"));
    set.add(new String("a")); // 放不进去,因为 equals 为 true
    

特殊说明

  • TreeSet 如果放不同类型对象且不实现比较规则,会抛 ClassCastException
  • Set 本身不保证顺序(除了 LinkedHashSet / TreeSet)

总结

✅ 可以放不同对象
✅ 只要不“相等”
⚠️ 建议用泛型,避免类型混乱

如果你说的是某种特定 Set(如 HashSet / TreeSet)或某种场景(如去重、缓存),可以告诉我,我给你更具体的例子。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI
助
手