java list集合问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java list集合问题相关的知识,希望对你有一定的参考价值。

list 里面装了2个list。
a 集合里面有 b和c 2个集合
b集合里有1和2 c集合有 3和4
如何把1,2,3,4 装到一个集合里面
求大牛帮忙啊

输出一下就明白了,list2.addAll之后的值为[ [1,2],1,2],list1.clear之后的值为[[],1,2]现在的list2长度为3,因为第一个元素是一个list对象,当list1.clear()之后list1的值为空,也就是[],addALL相当于把list1的值取出之后在add到list2中也就相当于list2.add("1"),list2.add("2"),总的来说就是相当于list2.add(list1),list2.add("1"),list2.add("2")

区别就是add添加的是什么就是什么,addALL会把添加的List的值先取出来然后在add到list中
以上回答你满意么?
参考技术A List<List<String>> a = new ArrayList<List<String>>();
List<String> result = new ArrayList<String>();
for (int k=0;k<a.size();k++)
if(a.get(k) != null)
for (int m=0; m<a.get(k).size();m++)
result.add(a.get(k).get(m).toString);







result 这个集合中就存储的是你需要的,如果你问的是这个意思,那么希望采纳。
参考技术B public class Test

public static void main(String[] args)
List<String> list = new ArrayList<String>();
List<Object> listA = new ArrayList<Object>();
List<String> listB = new ArrayList<String>();
List<String> listC = new ArrayList<String>();
listB.add("1");
listB.add("2");
listC.add("3");
listC.add("4");
listA.add(listB);
listA.add(listC);
//System.out.println(listA);
for(String temp : listB)
list.add(temp);

for(String temp : listC)
list.add(temp);

System.out.println( "aa " + list);



我是菜鸟,我这样写一下,你看看和你的要求符合不?

java 基础关于 list 集合问题

List list1 = new ArrayList();
list1.add("1");
list1.add("2");

List list2 = new ArrayList();
list2.add(list1); //如果下面执行list1.clear()后 list2里面添加的list1的数据会清空

list2.addAll(list1); //如果下面执行list1.clear()后 list2里面添加的list1数据不会清空

list1.clear();
System.out.println(list2.toString());

谁能说说这是为什么 ?
下面竟有人看不懂,就是想问下 add(Object o) 和 addAll(Collection c ); 的区别。

list2.add(list1); list1作为一个对象被传入(这时list2中只有一个值),当list1所包含的被clear,list1还在list2中,只是为空而已(list2中有个空的list1,list1为空)
list2.addAll(list1); 把list1中的包含元素做为list2自己的元素add ,你加了两个,自然传入的是两个值,这时clear list1,只是切断list1和两个元素之间的关系,并没有改变list2(这时list2有两个值,list1为空)
“就是想问下 add(Object o) 和 addAll(Collection c ); 的区别。”
这参数不同,还不是明显的区别么?
参考技术A 你可以这样理解:add方法是将list1的内存地址加给了list2的一个item,并不是把list1中的每个元素作为item加到list2中,是作为整体,list1就是其一个item,这样list1清空后,内存中list1存放的元素的地址丢失,但其元素实际还在。而addAll是把list1的每个元素作为item加到list2中。里面的存放元素指向原来list1每个元素的内存地址。即使list1清空啦,也不会影响到list2。 参考技术B 输出一下就明白了,list2.addAll之后的值为[ [1,2],1,2],list1.clear之后的值为[[],1,2]现在的list2长度为3,因为第一个元素是一个list对象,当list1.clear()之后list1的值为空,也就是[],addALL相当于把list1的值取出之后在add到list2中也就相当于list2.add("1"),list2.add("2"),总的来说就是相当于list2.add(list1),list2.add("1"),list2.add("2")

区别就是add添加的是什么就是什么,addALL会把添加的List的值先取出来然后在add到list中本回答被提问者采纳
参考技术C add是将传入的参数作为当前List中的一个Item存储,即使你传入一个List也只会另当前的List增加1个元素
addAll是传入一个List,将此List中的所有元素加入到当前List中,也就是当前List会增加的元素个数为传入的List追问

再继续copy吧

追答

呵呵..
但是也没错阿 这解释.....

参考技术D 对象的引用在list1.clear();也被清空了追问

你以为就你想到了对象的引用被清空了。

以上是关于java list集合问题的主要内容,如果未能解决你的问题,请参考以下文章

java遍历list集合问题

阿里巴巴开发手册(list集合操作)

JAVA中map中存储list集合问题。

JAVA怎么取多个List集合的交集?

java中如何将list集合清空

Java集合---List集合