Collections.singleton() 方法不能用作文档?
Collections.singleton() methods does not work as documentation?
我已经测试了 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
正如文档所说,该方法调用 returns 一个只包含指定对象的不可变列表,一个单例列表只包含一个元素,一个单例 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);
文档中所说的是,如果您执行以下操作:
List list = Collections.singletonList(arraylist);
list.add(new ArrayList());
那么这会在运行时抛出异常。
我已经测试了 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
正如文档所说,该方法调用 returns 一个只包含指定对象的不可变列表,一个单例列表只包含一个元素,一个单例 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);
文档中所说的是,如果您执行以下操作:
List list = Collections.singletonList(arraylist);
list.add(new ArrayList());
那么这会在运行时抛出异常。