在java中,初始化arraylist时直接赋值有以下几种常见方式:
构造器传入集合:
list<string> list = new arraylist<>(arrays.aslist("item1", "item2", "item3"));
或者在java 9及以上版本中使用list.of()
方法创建不可变列表:
list<string> list = new arraylist<>(list.of("item1", "item2", "item3"));
使用匿名内部类(不常用且可能引起混淆,实际编程中很少这样用):
// 不推荐此做法,仅作展示 arraylist<string> list = new arraylist<string>() {{ add("item1"); add("item2"); add("item3"); }};
注意:这种方式利用了匿名内部类的实例初始化块,但不是标准做法,因为它违反了“面向接口”的编程原则,且可能导致代码难以理解。
通过循环或流api填充:
// 循环添加 list<integer> list = new arraylist<>(); for (int i = 0; i < 5; i++) { list.add(i); } // java 8+ 使用stream api list<integer> list2 = stream.of(1, 2, 3, 4, 5).collect(collectors.tocollection(arraylist::new));
使用addall方法:
list<integer> initialdata = arrays.aslist(1, 2, 3); list<integer> list = new arraylist<>(); list.addall(initialdata);
通常最常见的是方式一是直接在构造arraylist时传入已有的集合,这种方式简洁高效。不过,如果初始数据较小并且已知,直接在声明时初始化也是最佳实践之一。对于较大的数据集或者动态生成的数据,使用循环或流api则更为灵活。
附:arraylist两个对象之间的赋值
list<string> list1 = new arraylist<string>(); list<string> list2 = new arraylist<string>(); list1 = list2;
这种方法只是将list2的地址赋值给了list1。也就是list1的地址指向了list2的地址,也就是两个list相当于一个list,因为他们指向了同一个地址值。而原来的list1的原先对象会被垃圾回收机制回收掉。
正确的赋值方法是:
list <string> list1 = new arraylist<string>(); //方法一:利用集合自带的构造方法 list<string> list2= new arraylist<string>(list1); //方法二:利用克隆的方法进行赋值 list<string> list2 =(arraylist<string>) list1.clone();
总结
到此这篇关于java基础之初始化arraylist时直接赋值的4种方式的文章就介绍到这了,更多相关java初始化arraylist时直接赋值内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
发表评论