List有序可重复,Set无序不重复!

L i s t S e t \color{#FF0000}{List有序可重复,Set无序不重复,这里指的是添加数据的顺序。}

但这里说的顺序有两个概念,一是按添加的顺序排列,二是遍历结果按自然顺序a-z排列。Set并不是无序的,传统说的Set无序是指HashSet,它不能保证元素的添加顺序,更不能保证自然顺序,而Set的其他实现类是可以实现这两种顺序的。

保证元素添加的顺序,不保证元素自然的顺序,可重复:List

不保证元素添加的顺序,不保证元素自然的顺序,不可重复:HashSet

保证元素添加的顺序,不可重复: L i n k e d H a s h S e t \color{#FF0000}{LinkedHashSet}

保证元素自然的顺序,不可重复:TreeSet

实例:

package com.xhy.xczx.test;

import java.util.*;

/**
 * 〈测试类〉
 *
 * @author Barrett
 * @version 1.0.0
 * @time 2020/1/21
 */
public class JavaTest1 {
    public static void main(String[] args) {
        /** List 保证元素的添加顺序,可以重复 **/
        List<String> list = new ArrayList<String>();
        list.add("s1");
        list.add("s3");
        list.add("s5");
        list.add("s4");
        list.add("s4");
        list.add("s2");
        list.forEach(e -> System.out.print(e + " "));
        System.out.println();

        /** HashSet  无序 不能重复**/
        Set<String> hashSet = new HashSet<>();
        hashSet.add("s1");
        hashSet.add("s3");
        hashSet.add("s5");
        hashSet.add("s4");
        hashSet.add("s4");
        hashSet.add("s2");
        hashSet.forEach(e -> System.out.print(e + " "));
        System.out.println();

        /** LinkedHashSet 保证元素添加的顺序**/
        Set<String> linkedHashSet = new LinkedHashSet<>();
        linkedHashSet.add("s1");
        linkedHashSet.add("s3");
        linkedHashSet.add("s5");
        linkedHashSet.add("s4");
        linkedHashSet.add("s4");
        linkedHashSet.add("s2");
        linkedHashSet.forEach(e -> System.out.print(e + " "));
        System.out.println();

        /** 保证元素自然的顺序:TreeSet **/
        Set<String> treeSet = new TreeSet<>();
        treeSet.add("s1");
        treeSet.add("s3");
        treeSet.add("s5");
        treeSet.add("s4");
        treeSet.add("s4");
        treeSet.add("s2");
        treeSet.forEach(e -> System.out.print(e + " "));
        System.out.println();
    }
}

结果:
在这里插入图片描述

发布了134 篇原创文章 · 获赞 32 · 访问量 4万+

猜你喜欢

转载自blog.csdn.net/yang_guang3/article/details/104320501