zoukankan      html  css  js  c++  java
  • 章节七、4-Sets

    一、set中不允许存在相同的元素

    package ZangJie7;
    
    
    import java.util.ArrayList;
    import java.util.HashSet;
    import java.util.List;
    import java.util.Set;
    
    public class SetDemo {
        /**
         * sets和list一样,都是集合,唯一不同的在于sets里面的元素不能重复,
         */
        public static void main(String[] args) {
            Set <String> set = new HashSet<String>();
            //在集合中添加元素
            set.add("BWm");
            set.add("AoDi");
            set.add("HonDa");
            set.add("HonDa");
            System.out.println(set);
            
            List<String> list = new ArrayList<String>();
            list.add("BWm");
            list.add("AoDi");
            list.add("HonDa");
            list.add("HonDa");
            System.out.println(list);
    
        }
    
    }

    运行结果为:(set中不允许存在相同的元素,所以只打印了一个“HonDa”)

    二、使用不同是set集合,排序结果不同

    package ZangJie7;
    
    
    import java.util.HashSet;
    import java.util.LinkedHashSet;
    import java.util.Set;
    import java.util.TreeSet;
    
    public class SetDemo {
        /**
         * sets和list一样,都是集合,唯一不同的在于sets里面的元素不能重复,
         */
        public static void main(String[] args) {
    //        HsahSet不保证存和取的顺序一样
            Set <String> set = new HashSet<String>();
            //在集合中添加元素
                set.add("BWm");
                set.add("AoDi");
                set.add("HonDa");
                set.add("HonDa");
    //        使用高级for循环来读取集合中的元素
            for(String item:set) {
                System.out.println("HashSet读取的元素顺序:"+item);
            }
            System.out.println();
            
    //        LinkHashSet 保证有序
            Set <String> lset = new LinkedHashSet<String>();
            //在集合中添加元素
                lset.add("BWm");
                lset.add("AoDi");
                lset.add("HonDa");
    //        使用高级for循环来读取集合中的元素
            for(String item:lset) {
                System.out.println("LinkedHashSet读取的元素顺序:"+item);
            }
            System.out.println();
                    
    //        TreeSet以自然排序的方式来对进行元素排序
            Set <String> tset = new TreeSet<String>();
            //在集合中添加元素
                tset.add("BWm");
                tset.add("AoDi");
                tset.add("HonDa");
    //        使用高级for循环来读取集合中的元素
            for(String item:tset) {
                System.out.println("TreeSet读取的元素顺序:"+item);
            }
                    
    /*        List<String> list = new ArrayList<String>();
            list.add("BWm");
            list.add("AoDi");
            list.add("HonDa");
            list.add("HonDa");
            System.out.println(list);*/
    
        }
    
    }

    运行结果为:

    三、set集合存储性能顺序

    HashSet按照hash值存储,例如读书馆中书放在那个书架上都是有记录的,找书时不需要每个书架都找一遍,直接去对应的书架拿即可。

    TreeSet需要保证自然顺序

    四、那set集合分为hashSet、treeSet和linkedHashSet,我们怎么来区分什么情况下使用:

    1、如果我们需要将元素排序, 那么使用TreeSet

    2、如果我们不需要排序, 使用HashSet, HashSet比TreeSet效率高

    3、如果我们需要保留存储顺序, 又要过滤重复元素, 那么使用LinkedHashSet

  • 相关阅读:
    c++多继承布局
    copy constructor
    default construction
    对象模型如何影响程序
    c++对象模型-对象模型
    在网站中引入特殊字体
    数组基础相关
    CSS3 transform3D
    即时效果--元素出现在页面特定区域时加载
    svg动态绘制饼状图
  • 原文地址:https://www.cnblogs.com/luohuasheng/p/10641419.html
Copyright © 2011-2022 走看看