Java-集合总结之Collection和Map--Set(2)

Set接口

  Collection的另一个子接口为Set,Set集合现在所拥有的方法都是从Collection哪儿继承的,它本身并没有对其功能扩充。

  Set接口存入元素的规则与List刚好相反,Set存入元素是无序的,且不会出现重复值

  Set接口有两个实现类,分别是HashSet和TreeSet

实现类HashSet

  HashSet是接口Set的一个实现类,它具有存储元素无序和不可重复的特点

  HashSet存入元素的原理:调用对应对象的hashCode()方法来获取对象的哈希值,然后根据对应的哈希值来确定元素在集合中的存取位置,接下来再调用该对象的equals()方法来确定元素的存储不会出现重复的值。

  HashSet具有良好的存取和查找性能。

  HashSet集合的使用与遍历:

import java.util.HashSet;
import java.util.Iterator;
/*
 * 定义一个测试类
 * 
 */
public class Test {

    public static void main(String[] args) {
        //创建HashSet集合对象
        HashSet set = new HashSet();
        //向该集合中添加元素
        set.add("jack");
        set.add("baobao");
        set.add("lucy");
        set.add("小黑");
        //添加重复元素
        set.add("小黑");
        
        //获取Iterator对象
        Iterator it = set.iterator(); 
        while(it.hasNext()){//通过while循环判断集合中是否还有元素
            Object obj = it.next();//通过迭代器的next()方法获取元素
            System.out.println(obj);
            
        }
    }
}

  输出结果:无序且不重复

   一般情况下,在定义类需要存入HashSet集合的时候,都需要重写hashCode()方法,和equals方法,否则会因为方法无效判断而导致存入HashSet集合的数据出现重复

实现类TreeSet

  TreeSet是Set接口的另外一个实现类,它通过自平衡的排序二叉树来存储元素,这样的方式存储方式能够把存进集合中的元素排序。

  TreeSet集合存入集合的元素是不重复的,元素是有顺序的。

  TreeSet实现与遍历:

import java.util.HashSet;
import java.util.Iterator;
import java.util.TreeSet;
/*
 * 定义一个测试类
 * 
 */
public class Test {

    public static void main(String[] args) {
        //创建TreeSet集合对象
        TreeSet set = new TreeSet();
        //向该集合中添加元素
        set.add("jack");
        set.add("lucy");
        set.add("helen");
        //添加重复元素
        set.add("helen");
        
        //获取Iterator对象
        Iterator it = set.iterator(); 
        while(it.hasNext()){//通过while循环判断集合中是否还有元素
            Object obj = it.next();//通过迭代器的next()方法获取元素
            System.out.println(obj);
            
        }
    }
}

  返回结果:无重复值,有序

更多Set学习,可深挖推荐

 https://www.cnblogs.com/IT-CPC/p/10904074.html

原文地址:https://www.cnblogs.com/momo-nancy/p/15490642.html