List对象之间的赋值

wudeaaa 2010-02-02 11:14:44
Java中List是接口,没有clone方法,因此两个List<Obj> A和B,其中Obj是自定义的类,把B的值赋给A,方法有: A = new ArrayList<Obj>(B);
或者强制类型转换为ArrayList,使用clone方法: A = (List<Obj>) ( ArrayList<Obj> B).clone();这两种方法第一种效率较低,第二种会出现泛型类型转换的警告,安全性不好,不知道大家还有什么好的方法。
...全文
812 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
nihuajie05 2010-02-04
  • 打赏
  • 举报
回复
这个要求跟原帖的要求差蛮多的哦
wudeaaa 2010-02-04
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 nihuajie05 的回复:]
引用 4 楼 wudeaaa 的回复:
引用 3 楼 plplum 的回复:
Java codeList <Object> a=new ArrayList <Object>();
        List <Object> b=new ArrayList <Object>();


        a.add(1);
        a.add(2);
        a.add(3);


        b.add?-
需要A和B保持一致,因此不能 addAll



楼主这里所谓的保持一致是什么意思?
是A中被添加元素后,B中也会多一个元素么?
或者B中元素被更新了,A中也能看到?
貌似跟最早的时候的说法有点不一样
[/Quote]意思是A是B的一份拷贝,B改变A就改变,A改变B不改变,在实际应用中A不会修改。
wudeaaa 2010-02-04
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 nihuajie05 的回复:]
这个要求跟原帖的要求差蛮多的哦

[/Quote]不要理解的那么深奥,其实很简单,就是如何高效的把B的值赋给A,使得A是B的一份拷贝,即A里面的值与B的相同
dom72 2010-02-04
  • 打赏
  • 举报
回复
不懂
paodan 2010-02-03
  • 打赏
  • 举报
回复
还是用new创建一个对象吧
wudeaaa 2010-02-03
  • 打赏
  • 举报
回复
多谢大家
南南北北 2010-02-03
  • 打赏
  • 举报
回复
List <Object> b=a;
nihuajie05 2010-02-03
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 wudeaaa 的回复:]
引用 3 楼 plplum 的回复:
Java codeList <Object> a=new ArrayList <Object>();
        List <Object> b=new ArrayList <Object>();


        a.add(1);
        a.add(2);
        a.add(3);


        b.add?-
需要A和B保持一致,因此不能 addAll

[/Quote]

楼主这里所谓的保持一致是什么意思?
是A中被添加元素后,B中也会多一个元素么?
或者B中元素被更新了,A中也能看到?
貌似跟最早的时候的说法有点不一样
bayougeng 2010-02-02
  • 打赏
  • 举报
回复
如果你要获取A的只读引用的话,可以这样;
B = Collections.unmodifiableList(A)
这样获得的引用就是A。但是不能改。
bayougeng 2010-02-02
  • 打赏
  • 举报
回复
第二种效率未必高。甚至会更低。
第一种是推荐的做法。
wudeaaa 2010-02-02
  • 打赏
  • 举报
回复
即A是B的一份拷贝
wudeaaa 2010-02-02
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 plplum 的回复:]
Java codeList<Object> a=new ArrayList<Object>();
List<Object> b=new ArrayList<Object>();


a.add(1);
a.add(2);
a.add(3);


b.add?-
[/Quote]需要A和B保持一致,因此不能 addAll
plplum 2010-02-02
  • 打赏
  • 举报
回复
List<Object> a = new ArrayList<Object>();
List<Object> b = new ArrayList<Object>();


a.add(1);
a.add(2);
a.add(3);


b.addAll(a);


Iterator<Object> it = a.iterator();
while(it.hasNext()){
System.out.println(it.next());
}


Iterator<Object> it1 = b.iterator();
while(it1.hasNext()){
System.out.println(it1.next());
}
sing4j 2010-02-02
  • 打赏
  • 举报
回复
List <Obj>
A和B都是List <Obj>类型,怎么会需要强转?
牛叔 2010-02-02
  • 打赏
  • 举报
回复
addAll(Collection c)
???

62,621

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧