章节七、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

原文地址:https://www.cnblogs.com/luohuasheng/p/10641419.html