zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    四个通用分页存储过程(来源于www.codeproject.com)
    C#2.0 print winform 打印窗体数据试试
    C# 2.0 Graphics 画雪人
    [转]Asp.Net 上传大文件专题(1)概述:上传大文件的难点
    [转]Asp.Net 上传大文件专题(2)页面生成流程
    [转]C# 调用sql 2000存储过程
    [转]Asp.Net 上传大文件专题
    [转]Asp.Net 上传大文件专题(3)从请求流中获取数据并保存为文件[下]
    c#中调用Ffmpeg转换视频格式的问题
    [转]Asp.Net 上传大文件专题(3)从请求流中获取数据并保存为文件[上]
  • 原文地址:https://www.cnblogs.com/momo-nancy/p/15490642.html
Copyright © 2011-2022 走看看