java中级——集合框架【3】-HashSet

HashSet

 

package cn.jse.hashset;

import java.util.HashSet;

public class TestCollection {

 

public static void main(String[] args) {

 

HashSet<String> names = new HashSet<>();

names.add("小明");

System.out.println("第一次插入数据:"+names);

 

//插入第二次同样的数据

names.add("小明");

System.out.println("第二次插入数据:"+names);

 

//结果发现如果插入相同的数据,是插不进的,容器只会保留一个

}

}

控制台:

 

结论就是set元素是不重复的,但是还有什么特点呢?——没有顺序

严格来说,HashSet是没有按照元素的插入顺序排序的。

...

HashSet<Integer> numbers = new HashSet<Integer>();

 

numbers.add(6);

numbers.add(1);

numbers.add(15);

 

System.out.println(numbers);

...

 

输出结果:[1, 6, 15]

还有就是因为Set不提供get()方法来获取指定位置的元素,所有遍历需要迭代器或者是增强型for循环

...

HashSet<Integer> numbers2 = new HashSet<Integer>();

for (int i = 0; i < 20; i++) {

           numbers2.add(i);

        }

System.out.println(numbers2);

 

//遍历Set可以采用迭代器iterator

        for (Iterator<Integer> iterator = numbers2.iterator(); iterator.hasNext();) {

            Integer i = (Integer) iterator.next();

            System.out.println("numbers2的数据:"+i);

        }

        

        //或者采用增强型for循环

        for (Integer i : numbers) {

            System.out.println("numbers的数据:"+i);

        }

...

 

 

我知道你是不是想问HashSetHashMap的关系?这不难回答,你可以观察一下HashSet的源码,其中:

private transient HashMap<E,Object> map;

可以发现HashSet自身并没有独立的实现,而是在里面封装了一个Map。HashSet是作为Map的key而存在的,而value是一个命名为PRESENT的static的Object对象,因为是一个类属性,所以只会有一个。

具体的HashMap的使用方式,有兴趣的同学看这里:Java基础——对象容器(顺序、集合、Hash)

转载于:https://www.cnblogs.com/llw1996/p/6845370.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值