`

怎么区分Set里的元素不重复

阅读更多
Set里的元素是不能重复的,那么用什么方法来区分重复与否呢? 是用==还是equals()? 它们有何区别?
应该从它俩的区别谈起,==是用来判断两者是否是同一对象(同一事物),而equals是用来判断是否引用同一个对象。再看一下Set里面存的是对象,还是对象的引用。根据java的存储机制可知,set里面存放的是对象的引用,所以当两个元素只要满足了equals()时就已经指向同一个对象,也就出现了重复元素。所以应该用equals()来判断。

总结:
1. equals() 判断对象内容
2. == 判断对象引用
3. Iterator 用来遍历容器中的元素

测试代码:
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;

public class SetTest {
    //结果输出为ELEM
    static void AddToSet(){
        String str = "ELEM";
        String str1 = new String("ELEM");
        Set set = new HashSet();
        Set setCompare = new HashSet();
        set.add(str);
        set.add(str1);
        setCompare.add(str1);
        //Iterator是用来遍历容器中的元素的
        Iterator itera = set.iterator();
        Iterator iteraCompare = setCompare.iterator();
        while(itera.hasNext())
        {
            System.out.println((String)itera.next());
        }
        while(iteraCompare.hasNext())
        {
            System.out.println((String)iteraCompare.next());
        }
        if(set.equals(setCompare)){
            System.out.println("两个对象内容相同");
        }
        if(set == setCompare){
            System.out.println("两个对象相等");
        }
       
    }
    public static void main(String[] args){
        SetTest.AddToSet();
    }

}
分享到:
评论

相关推荐

    set集合判断集合中是否有无元素-Python入门教程笔记(五)集合(set)及函数.pdf

    `remove()`会抛出异常如果尝试删除的元素不存在,而`discard()`则不会。例如: ```python name_set.remove('Gina') # 如果Gina不在集合中,将抛出异常 name_set.discard('Gina') # 如果Gina不在集合中,什么都不会...

    集合的概念及应用和HashSet保证数据不重复的原理

    标题中的“集合的概念”指的是在计算机科学中,集合是一种数据结构,它可以存储一组不重复的元素。在Java中,集合接口(如List、Set和Map)定义了操作这些元素的方法,如添加、删除和查找。集合框架的设计使得开发者...

    python中的set实现不重复的排序原理

    为了确保`School`中的教师实例不重复,开发者最初尝试使用`set`来存储这些实例。然而,由于`set`要求其元素必须是可哈希的,也就是说,这些元素必须拥有`__hash__`方法,而最初的`Teacher`类并没有提供这个方法,...

    java面试宝典

    65、Set里的元素是不能重复的,那么用什么方法来区分重复与否呢? 是用==还是equals()? 它们有何区别 17 66、HashMap和Hashtable的区别 17 67、说出ArrayList,Vector, LinkedList的存储性能和特性 17 68、java中有几...

    Map和Set的区别

    在C++标准模板库(STL)中,`Map` 和 `Set` 是两种关联容器,它们都提供了高效的数据存储和检索能力。然而,它们在数据结构、存储方式以及使用场景上...而在处理需要自动排序且元素不重复的简单集合时,`Set` 更合适。

    在javascript中,如果删除二维数组中重复的元素

    然而,上述方法可能会遇到比较复杂的问题,比如数组中包含了对象或其他引用类型的数据时,简单地转换成字符串可能并不能有效区分重复与否。在这种情况下,我们需要实现更高级的逻辑来比较子数组的内容。 在处理比较...

    第8天(集合【LinkedList、HashSet、Collection集合体系】)v201703104

    Set 集合则不允许元素重复,且无序。Set 接口的实现通常依赖于元素的 equals() 和 hashCode() 方法来判断元素是否重复,确保集合中的唯一性。HashSet 是 Set 的一种实现,它使用哈希表(实际上是一个 HashMap)来...

    Java基础部分 Java代码查错算法与编程html&JavaScript&ajax部分面试题

    这个资源不太新,但是,对于基础的部分还是有用。 一. Java基础部分 2 1、一个".java"源文件中是否可以包括多个...67、Set里的元素是不能重复的,那么用什么方法来区分重复与否呢? 是用==还是equals()? 它们有何区别? 2

    JavaScript之Map和Set_动力节点Java学院整理

    总结,Map和Set是JavaScript中用于数据存储和操作的重要工具,它们提供了更强大的数据结构选择,尤其在处理键值对和不重复元素的场景下。开发者可以根据项目需求和目标浏览器的兼容性来决定是否采用这些新数据类型。

    PHP的数组中提高元素查找与元素去重的效率的技巧解析

    默认情况下,`strict`为`FALSE`,意味着不区分数据类型。例如,如果`needle`是字符串,即使`haystack`中的元素是对应的整数,也会被视为匹配。`in_array()`返回`TRUE`表示找到了匹配项,反之返回`FALSE`。 然而,当...

    js数组去重的N种方法(小结)

    这种方法的去重过程非常简洁,且不需要手动检查重复元素,由Set自动完成。但是,需要注意的是,由于Set在某些旧的浏览器中不支持,所以使用前需要确保兼容性。 5. 利用Set结构和展开运算符 此方法与上一个方法类似...

    python元组、字典、集合基础知识笔记.doc

    集合(Set)是无序的不重复元素序列,用大括号 `{}` 或 `set()` 函数创建。集合支持数学运算,如并集、交集和差集。例如: ```python set1 = {1, 2, 3} set2 = {2, 3, 4} # 创建集合 print(set1) # 输出 {1, 2, 3} #...

    第十一单元.pptx_电子版_pptx版

    总结来说,Set和Map的引入极大地丰富了JavaScript的数据处理能力,特别是对于处理不重复数据和任意类型键值对的需求。同时,WeakSet提供了一种安全的处理对象引用的方式,避免了内存泄漏的问题。在实际开发中,合理...

    collection,map的区分

    `Collection`接口是Java集合框架的核心接口之一,它代表了一个不重复元素的集合。`Collection`接口有多个子接口和实现类,如`List`、`Set`等。以下是一些主要的实现: 1. **List**: - `List`是一种有序集合,允许...

    高一数学必修1集合单元测试题.doc

    集合的元素可以是任何类型,包括数字、字母、其他集合等,但一个集合中不允许有重复的元素。 2. **集合的分类** - 空集(Empty Set):不包含任何元素的集合,记为∅或{}。 - 非空集(Non-empty Set):至少包含...

    java常见集合类的区别

    接下来是Set接口的实现,HashSet是最基础的无序不重复元素集合。它通过哈希表(HashMap内部结构)来存储元素,插入和查找速度较快,但不保证元素顺序。LinkedHashSet与HashSet类似,但它维护了元素的插入顺序,增加...

    Python元组和集合的整理

    集合(Set)则是一种无序的、不重复的元素集合,可以理解为没有value的字典,同样使用花括号 `{}` 表示。创建集合的常见方法包括使用 `set()` 函数转换其他数据结构,如列表、元组、字符串或另一个集合。例如,`a = ...

    详解Java的Hibernate框架中的set映射集与SortedSet映射

    总结起来,`Set`映射适用于不需要特定顺序且不允许重复元素的场景,而`SortedSet`映射则在需要保持元素排序顺序时使用。在Hibernate中,正确地配置和使用这两种集合类型,能够帮助开发者更方便地管理和操作数据库中...

    python字符串, 列表, 字典, 集合方法说明

    14. symmetric_difference(set):返回两个集合中不重复的元素集合。 15. symmetric_difference_update(set):移除集合中的元素,这些元素在另一个指定集合中也出现。 16. union(set):返回两个集合的并集。 17. ...

Global site tag (gtag.js) - Google Analytics