首页 > 编程知识 正文

java定义list,list初始化赋值

时间:2023-05-06 19:08:06 阅读:17553 作者:3361

用Java初始化List的五种方法

由于Java中经常需要用到List,所以下面简单介绍几种常见的初始化方式。

构建List后,用List.add初始化

列表字符串列表=new linked list (;

stringlist.add('a );

stringlist.add('b );

stringlist.add('c ';

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

{{}}使用方括号语法

列表字符串列表=新链接列表

add(a );

add(b );

add(c );

};

这种方式比较方便了。

外部{}定义了链接列表的匿名内部类。 内层的{}定义了实例初始化代码块。 此代码块在初始化内部类时执行。 因此,这里相当于定义匿名内部类,并使用add添加和初始化元素。

这种方式有几个缺点:

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

静态内部类保存对存在的外部类的引用。 如果需要将List放回其他位置使用,可能会导致内存泄漏。

使用Arrays.asList

liststringlist=arrays.as list (' a '、' b '、' c ' );

该方式使用了java.util.Arrays的静态方法。 写法比以往的两个更简洁,也没有构建匿名内部类的效率问题。

但是,需要注意一些:

Arrays.asList返回Arrays的静态内部类。 静态内部类没有对存在的外部类的引用。

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

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

int [ ] intarray=new int [ ] { 1,2,3 };

integer [ ] integer array=new integer [ ] { 1,2,3 };

listintarraylist=arrays.as list (intarray );

listintegerlist=arrays.as list (integer array );

listintegerlist2=arrays.as list (1,2,3 );

其中arrays.asList(Intarray )的返回值是列表而不是列表。 这不是问题,但使用时需要注意。 如果在Java中尽量使用List和Integer,则如果尽量不使用int等基本类型和[]等比较基本的数据结构,就可以避免。

说闲话:

Java毕竟不能说是完全的面向对象。 毕竟,还剩下基本的数据类型。 确实,基本的数据类型比相应的包类型更有效地使用。 但是,应该使用基本类型,应该使用封装类型,应该什么时候使用这个,什么时候使用哪个,在使用中带来了混乱。 Java为用户提供了更多的选择,但给用户带来了难题。 在我看来,与Java相比,c的一个优点是有很多事情受到限制,有更明确更明确的定义,减少了歧义,容易理解。 但是,基本的数据类型在这里,我仍然觉得Java作为改善了c缺点的语言留下了阴影。

虽然本文介绍了初始化列表,但是这里的{}方括号语法也可以用于许多其他类型,如Map初始化。 相比之下,Arrays.asList只能用于初始化列表类型。

4 .使用流(JDK8)

列表=stream.of (a )、b )、c )、collectors.tolist );

使用JDK8的Stream进行了初始化。 简单地初始化List,使用Stream有点大,不好用。

5 .使用列表(JDK9)

listlist=lists.newArraylist('a '、' b '、' c ' );

这和Arrays.asList一样简洁清晰。

参考资料

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。