创建不可变集合(java)

不可变集合的定义

不可变集合,顾名思义,就是不可以被修改的集合。一旦该集合创建完毕,其长度和内容均不能改变(不能增加或者减少元素),只能查找集合内的元素。

如果在创建集合的过程中不希望别人修改集合中的内容,那么就可以创建不可变集合,使得别人在使用此集合的时候只能进行查找操作(例如斗地主的牌,电脑硬件型号等)。

创建不可变集合的书写格式

在List,Set,Map接口中,都存在 静态的of方法,可以获取一个不可变的集合

public class demo01 {
    public static void main(String[] args) {
        /*
        创建不可变的List集合
        "张三","李四","王五","赵六"
         */

        //一旦创建完毕之后,是无法进行修改的,在下面的操作只能进行查询
        List<String> list = List.of("张三","李四","王五","赵六");

        System.out.println(list.get(0));
        System.out.println(list.get(1));
        System.out.println(list.get(2));
        System.out.println(list.get(3));

    }
}

注意:这个集合不能添加,不能删除,不能修改

代码结果运行如下:

张三
李四
王五
赵六

使用三种遍历方式进行遍历

   //使用增强for进行遍历
       for (String str : list) {
           System.out.println(str);
       }

        System.out.println("======================");

       //使用迭代器进行遍历
        Iterator it = list.iterator();
       while (it.hasNext()) {
           System.out.println(it.next());
       }

        System.out.println("======================");

       //使用for循环遍历得到每个值
        for(int i=0;i<list.size();i++) {
            System.out.println(list.get(i));
        }

代码结果运行如下:

张三
李四
王五
赵六
======================
张三
李四
王五
赵六
======================
张三
李四
王五
赵六

创建不可变的Map集合

public static void main(String[] args) {
       /* 创建Map不可变集合,键值对的数量不超过10个*/

      //1.创建一个普通的集合
        HashMap<String,String>hm=new HashMap<>();
        hm.put("zhangsan","tianjin");
        hm.put("lisi","nanjing");
        hm.put("wangwu","shanghai");

        //2.利用上面的数据来获取一个不可变的集合

        //获取到所有的键值对对象(entry对象)
        Set<Map.Entry<String,String>>entries = hm.entrySet();

        //把entries变成一个数组
        Map.Entry[]arr1=new Map.Entry[0];
        /*toArray方法会在底层比较集合长度跟数组长度两者的大小
        如果集合长度>数组长度:重新创建数组
        如果集合长度<=数组长度:就不会创建新的数组,而是直接用*/
        Map.Entry[]arr2=entries.toArray(arr1);

        Map map=Map.ofEntries(arr2);




        //获取到hm集合里面所有的键值对对象,把他变成数组,数组里面装的是entry对象
        Map<Objects,Objects> map1=Map.ofEntries(hm.entrySet().toArray(new Map.Entry[0]));

        Map<String,String> map2=Map.copyOf(hm);
        map2.put("zhangsan","tianjin");
    }

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值