Java小白一文讲清Java中集合相关的知识点(五)

Set接口和常用方法

基本介绍

  • 无序(添加和取出的顺序不一样),没有索引
  • 不允许重复元素,所以最多包含一个null
  • JDK API 中Set接口的实现类有:
    public static void main(String[] args) {
   
   
        //1.以set接口的实现类HashSet来讲解Set 接口的方法
        //2.set接口的实现类的对象(Set接口对象),不能存放重复的元素,可以添加一个null
        //3.set接口对象存放数据是无序的--即添加的顺序和取出的顺序不一致
        //4.注意:取出的顺序虽然不是添加的顺序,但是其是固定的,即放入和取出只会打乱一次,
        //  并不是说同样的一组数据,取得第二次和第三次顺序不一样;
        Set set = new HashSet();
        set.add("bingo!!");
        set.add("冲冲冲!!");
        set.add("kerwin");
        set.add("enjoy");
        set.add(true);
        set.add(null);
        set.add(null);

        System.out.println(set);
        //输出    [null, bingo!!, 冲冲冲!!, enjoy, kerwin, true]
        for (int i = 0; i < 5; i++) {
   
   
            System.out.println(set);
        }
        //输出结果如下
        /**
         * [null, bingo!!, 冲冲冲!!, enjoy, kerwin, true]
         * [null, bingo!!, 冲冲冲!!, enjoy, kerwin, true]
         * [null, bingo!!, 冲冲冲!!, enjoy, kerwin, true]
         * [null, bingo!!, 冲冲冲!!, enjoy, kerwin, true]
         * [null, bingo!!, 冲冲冲!!, enjoy, kerwin, true]
         * [null, bingo!!, 冲冲冲!!, enjoy, kerwin, true]
         */
    }

常用方法

和List接口一样,Set接口也是Collection的子接口,因此,常用方法和Collecton接口一样

Set接口遍历方式(2种)

同Collection的遍历方式一样,因为Set接口是Collection接口的子接口

  • 可以使用迭代器
  • 增强for
  • 不能使用索引的方式来获取
@SuppressWarnings({
   
   "all"})
public class Journey {
   
   
    public static void main(String[] args) {
   
   
 
        Set set = new HashSet();
        set.add("bingo!!");
        set.add("冲冲冲!!");
        set.add("kerwin");
        set.add("enjoy");
        set.add(true);
        set.add(null);
        set.add(null);

        //遍历--使用迭代器
        System.out.println("================迭代器遍历===============");
        Iterator iterator = set.iterator();
        //此时要联想到迭代器的结构
        while (iterator.hasNext()) {
   
   //判断还有没有下个元素
            Object obj = iterator.next();
            System.out.println(obj);
        }
        //输出结果如下
        /**
         * null
         * bingo!!
         * 冲冲冲!!
         * enjoy
         * kerwin
         * true
         */

        //遍历--增强for
        System.out.println("=========增强for遍历===========");
        for (Object o : set){
   
   
            System.out.println("for->"+o);
        }
        //输出如下
        /**
         * for->null
         * for->bingo!!
         * for->冲冲冲!!
         * for->enjoy
         * for->kerwin
         * for->true
         */
        
        //set接口对象,不能通过索引来获取,所以无法用normal-for来循环获取
        
    }
}

HashSet的全面说明

  • HashSet实现了Set接口
  • HashSet实际上是HashMap 源码如下:
    public HashSet() {
   
   
        map = new HashMap<>();
    }

  • HashSet可以存放null值,但是只能有一个null
  • HashSet不保证元素是有序的,取决于Hash后,再确定索引的结果
  • 不能有重复元素/对象;
import java.util.*;

@SuppressWarnings({
   
   "all"})
public class Journey {
   
   
    public static void main(String[] args) {
   
   

        Set hashSet = new HashSet();

        hashSet.add(true);
        hashSet.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值