Qua*_*yen 1 java collections singleton-methods
我已经测试了Collections.singleton()方法,如何工作,但我发现它不像文档说的那样工作?
List arraylist= new ArrayList();
arraylist.add("Nguyen");
arraylist.add("Van");
arraylist.add("Jone");
List list = Collections.singletonList(arraylist);// contains three elements
System.out.println(list.size());// right
Run Code Online (Sandbox Code Playgroud)
正如文档所说,方法调用返回一个只包含指定对象的不可变列表.单例列表只包含一个元素,单例HashMap只包含一个键.单例对象是不可变的(不能修改以添加一个元素),但是当我在代码中看到的那个列表包含三个元素("Nguyen","Van","Jone")时.
谁能解释一下为什么?非常感谢 !!
返回的List
是一个List
的List
秒.在这种情况下,返回的列表列表本身是不可变的,而不是包含的List
.返回的列表也只包含一个元素,而不是三个:arraylist
变量本身被认为是一个元素,并且是存储在返回的列表中的唯一元素Collections.singletonList
.换句话说,该语句Collections.singletonList(arraylist)
不会创建包含所提供列表的所有元素的列表.
如果你使用泛型,这将更加明显:
List<String> arraylist= new ArrayList<>();
arraylist.add("Nguyen");
arraylist.add("Van");
arraylist.add("Jone");
List<List<String>> list = Collections.singletonList(arraylist);
Run Code Online (Sandbox Code Playgroud)
文档说的是,如果您执行以下操作:
List list = Collections.singletonList(arraylist);
list.add(new ArrayList());
Run Code Online (Sandbox Code Playgroud)
那么这会在运行时抛出异常.
归档时间: |
|
查看次数: |
337 次 |
最近记录: |