请教一个关于Collections.nCopies的问题 arraylistcollection 异常实例 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 public class FillingList { public static void main(String[] args){ List<StringAddress> list=new ArrayList<StringAddress>( Collections.nCopies(4, new StringAddress("hello"))); System.out.println(list); Collections.fill(list, new StringAddress("world")); System.out.println(list); }}这样也是可以运行的,为什么把list单独用nCopies赋值就不行呢 我看了一下nCopies方法的源码,它返回的是Collections的一个内部类对象CopiesList。而此时你把这个对象的引用赋值给了list,当你用Collections.fill()进行操作时,它其实调用的是List的set方法,此时实际上是用CopiesList里面的set方法了,因为引用指向的是这个对象的实例。CopiesList是继承了AbstractList的,我觉得可能是两者的set方法不一致的原因吧,我也讲得不是很清楚。但是看了源码之后,但觉是有点问题。 这个Collections.nCopies效果和Arrays.asLIst()有些相似,Arrays.asLIst()返回的是一个不可改变的列表,如果你试图在上面进行赋值操作就会抛出UnsupportedOperationException。Thinking In java 里面有介绍,可以去看看 有没有这样功能的java源代码? 为什么会出现越界? 能不能对一个对象进行某个操做后,以后在多线程时,在任何地方对这个对象的任何属性的写操做就变成同步的。 API 文档找不到方法?? 关于Jtable的问题 用java实现一个功能关于日期的 弱智问题,跪请解答。立答立解 java代码补全 请问有没有直接把java字节码生成本地代码的程序? 眼睛冒烟啦!!(声嘶力竭~~) 下面这个java程序的入口在哪?为什么没有main函数也行 String 格式化的问题,求大神帮助,急,急急!!!
public static void main(String[] args){
List<StringAddress> list=new ArrayList<StringAddress>(
Collections.nCopies(4, new StringAddress("hello")));
System.out.println(list);
Collections.fill(list, new StringAddress("world"));
System.out.println(list);
}
}
这样也是可以运行的,为什么把list单独用nCopies赋值就不行呢
而此时你把这个对象的引用赋值给了list,当你用Collections.fill()进行操作时,它其实调用的是List的set方法,此时实际上是用CopiesList里面的set方法了,因为引用指向的是这个对象的实例。
CopiesList是继承了AbstractList的,我觉得可能是两者的set方法不一致的原因吧,我也讲得不是很清楚。但是看了源码之后,但觉是有点问题。