首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

创建集合不需要new的懒人写法

在平时写代码的时候,我们经常因为业务需要,需要创建一个只有单一元素的集合。只包含一个元素,还需要new,太麻烦了。

不光我们天天写new觉得麻烦,大牛们早就想到了这个问题,它给我们提供了一些工具类,专门应对这样的场景。有了这些工具类,我们不仅可以创建只有一个元素的集合,还可以创建空集合,无需重复发明轮子。

这不是懒,这是为了高效编程。善于使用工具类是高效编程的需要。

Arrays 是 java.util 包中的工具类。

Arrays.asList() 方法接受一个变长参数,返回一个固定大小的List,这个List的大小不能改变。

这种方法通常用于在需要一个固定的List时使用,例如在初始化时用于传递给某个方法或者返回一个常量List。

Collections 是 java.util 包中的工具类。

Collections.singletonList() 方法接受一个对象作为参数,并返回一个只包含该对象的List。

这种方法适用于创建只包含一个元素的List,且这个List不需要经常被修改。

3、常规写法

List<String> list = new ArrayList<>();

list.add("Hello, Spring!");

Collections 是 java.util 包中的工具类。

这种方法适用于创建一个固定的Map,只有一个键值对,不需要被修改。

2、匿名内部类,可修改

// 使用初始化语法添加键值对

Map<String, String> map = new HashMap<String, String>() {{

put("key", "value");

}};

这种方式利用了Java中匿名内部类的特性,通过双括号初始化块(Double Brace Initialization)来创建一个包含初始元素的HashMap。

尽管这种方法看起来更冗长,但可以在创建Map时直接添加多个键值对,并且返回的Map可以根据需要修改。

这种方法还是需要new的。

3、常规写法

Map<String, String> map = new HashMap<String, String>();

map.put("key", "value");

三、创建空集合

1、空的List集合,不可修改

// 返回一个空的List<Integer>集合对象

List<Integer> emptyList = Collections.emptyList();

常规写法:

List<String> emptyList = new ArrayList<>();

这个List集合是空的,尚未添加任何元素。我们可以根据需要添加元素,或者直接将其用作空集合传递给其他方法或类。

但是针对不需要添加元素的集合来说,上一种写法更节能。

2、空的Set集合,不可修改

// 返回一个空的Set<String>集合对象

Set<String> emptySet = Collections.emptySet();

常规写法:

Set<String> emptySet = new HashSet<String>();

这是一个空Set集合,可以往里面添加元素。

但是针对不需要添加元素的集合,上一种写法更节能。

3、空的Map集合,不可修改

// 返回一个空的Map<String, Double>集合对象

Map<String, Double> emptyMap = Collections.emptyMap();

常规写法:

Map<String, String> emptyMap = new HashMap<>();

这是一个键和值都为String类型的空Map集合,但是可以往里面添加键值对。

但是针对不需要添加键值对的集合来说,上一种更节能。

最后总结

在日常编程中,了解如何高效地创建和操作集合是非常重要的。

以上介绍的方法,无论是使用Arrays.asList()、Collections.singletonList()、Collections.singletonMap()还是使用匿名内部类等技术,都为我们在特定场景下快速处理集合提供了便利。

例如,当我们需要传递一个不变的集合给不可控的API时,使用不可变集合可以保证集合内容的安全不被修改,减少程序中的错误。

使用Collections的工具方法创建空的集合对象或单一元素的集合时,不仅可以减少代码量,提高代码可读性,而且由于这些方法返回的都是不可变对象,还有助于提升程序的安全性和效率,尤其在多线程环境下。

此外,使用这些方法还可以减少不必要的内存消耗,因为它们通常返回的是单例对象或者非常轻量级的对象。

在选择创建方法时,应当考虑实际需求——是否需要修改集合、集合的大小是否可能改变、是否需要线程安全等因素。理解和掌握这些集合操作的技巧,能够帮助我们编写出更简洁、高效且健壮的Java代码。

最后,虽然Java提供了多种便捷的方式来处理集合,但每种方式都有其适用场景。作为开发者,我们应该根据实际的应用需求选择最合适的方法,以确保代码的性能和可维护性。

  • 发表于:
  • 原文链接https://page.om.qq.com/page/OP-5rh0RTA-PlMrcfwXrrgbQ0
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券