Collections 的 emptyList()、emptyMap() 、emptySet()

2024-06-09 19:32

本文主要是介绍Collections 的 emptyList()、emptyMap() 、emptySet(),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Collections.emptyList()
Collections.emptyMap()
Collections.emptySet()

参考链接:

https://stackoverflow.com/questions/14846920/collections-emptymap-vs-new-hashmap

会生成指定类型的空 List Set Map,而且是不可变的,如进行 add() 操作会报 java.lang.UnsupportedOperationException,返回这样不可变的空集合有什么作用呢?

  • 方法内部会返回 static final 成员,创建后相当于常量可重复引用,当需要使用一个空集合时不用 new 去分配内存,比如一个测试用例 API 接口就需要一个 Map<String,Object> ,若此时只需要一个空 map 跑用例,直接用 Collections.emptyMap() 作为参数即可
  • 防止空指针出现,当你的代码需要一个集合而这个集合可能不存在,此时尽量使用空集合而不是 null,因为集合一个常用的操作就是遍历,你不知道你返回的结果在后续会不会被遍历。比如一个查询步骤返回一个集合,当返回一个空集合是就可以用这类方法,还可以防止后续对这个空集合再做 add 操作。

注意:返回0长度的数组或者集合,而不是 null

而且当我们每次都 new ArrayList() 或者 new LinkedList() ,在创建的时候就会有初始大小,多少会占用一些内存。每次使用都 new 一个空的 list 集合,浪费就积少成多,浪费就严重啦。

/**
* The empty map (immutable).  This map is serializable.
*
* @see #emptyMap()
* @since 1.3
*/
@SuppressWarnings("rawtypes")public static final Map EMPTY_MAP =  new EmptyMap<>();/*** Returns an empty map (immutable).  This map is serializable.*
* <p>This example illustrates the type-safe way to obtain an empty map:* @implNote Implementations of this method need not create a separate* {@code Map} object for each call.  Using this method is likely to have* comparable cost to using the like-named field.  (Unlike this method, the* field does not provide type safety.)** @param <K> the class of the map keys* @param <V> the class of the map values* @return an empty map* @see #EMPTY_MAP* @since 1.5*/
@SuppressWarnings("unchecked")public static final <K,V> Map<K,V> emptyMap() {return (Map<K,V>) EMPTY_MAP;}

------致所有正在努力奋斗的程序猿们!加油!!
有码走遍天下 无码寸步难行
1024 - 梦想,永不止步!
爱编程 不爱Bug
爱加班 不爱黑眼圈
固执 但不偏执
疯狂 但不疯癫
生活里的菜鸟
工作中的大神
身怀宝藏,一心憧憬星辰大海
追求极致,目标始于高山之巅
一群怀揣好奇,梦想改变世界的孩子
一群追日逐浪,正在改变世界的极客
你们用最美的语言,诠释着科技的力量
你们用极速的创新,引领着时代的变迁

——乐于分享,共同进步,欢迎补充
——Treat Warnings As Errors
——Any comments greatly appreciated
——Talking is cheap, show me the code
——GitHub:https://github.com/selfconzrr

这篇关于Collections 的 emptyList()、emptyMap() 、emptySet()的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1046089

相关文章

Java重修笔记 第四十九天 Collections 工具类

Collections 工具类 1. public static void reverse(List<?> list)         反转集合中元素的顺序 2. public static void shuffle(List<?> list)         将集合里的元素顺序打乱 3. public static <T extends Comparable<? super T>>

Python模块 - Collections

collections的常用类型有: 计数器(Counter) 双向队列(deque) 默认字典(defaultdict) 有序字典(OrderedDict) 可命名元组(namedtuple) Counter() Counter 作为字典(dict)的一个子类用来进行hashtable计数,将元素进行数量统计、计数后返回一个字典,键值为元素:值为元素个数 s = 'abcbcac

【编程底层思考】详解Java中Collections工具类

Java 的 java.util.Collections 类是一个包装类,它包含了一系列静态方法来操作或返回集合对象。这个类提供了对集合框架的扩展,使得集合的使用更加灵活和强大。以下是 Collections 类的一些关键特性和用途: 静态方法 排序:sort(List list) 可以对列表进行自然顺序排序,sort(List list, Comparator c) 允许使用自定义的比较器进

23. 如何使用Collections.synchronizedList()方法来创建线程安全的集合?有哪些注意事项?

Collections.synchronizedList() 方法用于将一个普通的 List 包装成线程安全的 List。通过这个方法生成的 List,所有的访问和修改操作都会被自动加锁,从而确保在多线程环境下对集合的并发访问是安全的。 如何使用 Collections.synchronizedList() 创建线程安全的集合 以下是使用 Collections.synchronizedL

第一章 集合框架和泛型(ArrayList/LinkedList/HashSet/HashMap/泛型集合/Collections算法类)

第一章 集合框架和泛型 一、Collection 1、Collection 接口存储一组不唯一,无序的对象 二、List List 接口存储一组不唯一,有序(插入顺序)的对象 1.ArrayList 实现了长度可变的数组,在内存中分配连续的空间优点:遍历元素和随机访问元素的效率比较高ArrayList类是List接口的一个具体实现类ArrayList对象实现了可变大小

2024年最新Java面试宝典系列-Collections集合篇1

Java中的集合类有哪些?它们的特点是什么 List:有序集合,允许重复元素,实现类如ArrayList、LinkedList。Set:无序集合,不允许重复元素,实现类如HashSet、TreeSet。Map:键值对集合,一个键对应一个值,实现类如HashMap、Hashtable、TreeMap。 ArrayList、LinkedList与Vector的区别是什么 ArrayList:基于

0基础学习Python路径(29)collections模块

1.简介 collections 是 python 的内置模块,提供了很多方便且高性能的关于集合的操作,掌握这些知识有助于提高代码的性能和可读性。 2.常用功能 2.1 namedtuple 功能详解 namedtuple() 返回一个新的元组子类,且规定了元组的元素的个数,同时除了使用下标获取元素之外,还可以通过属性直接获取。 from collections import named

Collections求数组最值

Integer[] numbers = { 8, 2, 7, 1, 4, 9, 5}; int min = (int) Collections.min(Arrays.asList(numbers)); int max = (int) Collections.max(Arrays.asList(numbers)); System.out.println("最小值: " + min); System.

java中的Collections

Java 的集合框架(Collections Framework)提供了一组标准的数据结构接口和类,用于存储和操作数据。Java 集合类位于 java.util 包中,主要包括以下几个核心接口和实现类。 1. 核心接口 1.1. Collection 接口 Collection 是集合框架的根接口,但它本身并不提供任何直接实现。常见的子接口包括 List、Set 和 Queue。 常用方法

Java中Collections

Collection是集合类的一个顶级接口,其直接继承接口有List与Set 而Collections则是集合类的一个工具类/帮助类,其中提供了一系列静态方法,用于对集合中元素进行排序、搜索以及线程安全等各种操作。此类不能实例化。Collections中有一些工具函数,比如说sort、reverse、fill等等。 看到了之后比较的好奇呗,在hashtable的时候进行同步,为了防止引用返回后