,,Java中初始化List的5种方法示例

,,Java中初始化List的5种方法示例

摘要:本文主要介绍了java中初始化链表的五种方法,并通过实例代码进行了详细介绍,对大家学习或使用Java有一定的参考价值。让我们和边肖一起为需要的朋友学习吧。

前言

链表是java的重要数据结构之一。我们经常会接触到ArrayList、Vector、LinkedList,这些都是继承自java.util.Collection接口。类图如下所示

Java中经常使用List。下面是一些常见的初始化方法。

1.构造List后使用List.add初始化

这是最常见的做法,用起来不是很方便。

2.使用{{}}双括号语法

这种方式比较方便。

外层的{0}定义了LinkedList的匿名内部类。内层的{}定义了一个实例初始化代码块。这个代码块在内部类初始化时执行。所以这相当于定义了一个匿名的内部类,用add添加元素来初始化它。

这种方式有几个缺点:

使用匿名内部类会导致效率的损失。当然,在大多数情况下,这种效率是可以接受的。

静态类保存对它所在的外部类的引用。如果需要将列表返回到另一个地方,可能会导致内存泄漏。

3.使用Arrays.asList

该方法使用java.util.Arrays的静态方法,编写方法比前两种方法更简洁,构造匿名内部类不存在效率问题。

但也有几点需要注意:

Arrays.asList返回数组的静态内部类(静态内部类不保存外部类的引用)。

这个内部类继承自AbstractList,实现RandomAccess,并在内部使用数组存储元素。但是,不支持添加或删除元素。这需要注意。如果只使用Arrays.asList初始化常量,那么这不是问题。

如果Arrays.asList的参数是数组的基本类型,那么需要注意的是,返回值可能与您预期的不同。

这里,Arrays.asList(intArray)的返回值是Listint[]而不是ListInteger。这完全不是问题,只是你用的时候要注意。如果在Java中能尽量使用List和Integer,就可以避免使用int和[],这种底层数据结构的基本类型。

虽然本文是关于初始化List的,但是这里的{{}}双括号语法也可以用于初始化Map和许多其他类型。相对来说,Arrays.asList只能用来初始化列表类型。

4. 使用Stream(JDK8)

使用JDK8的流进行初始化。简单地初始化列表,使用Stream有点大材小用。

5. 使用Lists(JDK9)

这就像Arrays.asList一样简洁明了

总结:

这就是本文的全部内容。希望这篇文章的内容对你的学习或工作有一定的参考价值。有问题可以留言交流。谢谢你的支持。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: