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

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

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

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

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

保证元素添加的顺序,不可重复: L i n k e d H a s h S e t \color{#FF0000}{LinkedHashSet} 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();
    }
}

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

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Rsun04551

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值