Collections.singletonList()
在Java中有什么用?据我所知,它返回一个包含一个元素的列表.为什么我想要一个单独的方法来做到这一点?不变性如何在这里发挥作用?
这个方法有没有特别有用的用例,而不仅仅是一个方便的方法?
Ste*_*n C 141
在javadoc中这样说:
"返回仅包含指定对象的不可变列表.返回的列表是可序列化的."
你问:
为什么我想要一个单独的方法来做到这一点?
为方便起见......为了节省您必须编写一系列语句:
不变性如何在这里发挥作用?
它是该方法规范的一部分; 往上看.
这种方法有没有特别有用的用例,而不仅仅是一种方便的方法?
显然,存在使用该singletonList
方法方便的用例.但我不知道你会如何(客观地)区分普通用例和"特别有用"用例......
sal*_*nga 14
@param the sole object to be stored in the returned list.
@return an immutable list containing only the specified object.
import java.util.*;
public class HelloWorld {
public static void main(String args[]) {
// create an array of string objs
String initList[] = { "One", "Two", "Four", "One",};
// create one list
List list = new ArrayList(Arrays.asList(initList));
System.out.println("List value before: "+list);
// create singleton list
list = Collections.singletonList("OnlyOneElement");
list.add("five"); //throws UnsupportedOperationException
System.out.println("List value after: "+list);
}
}
Run Code Online (Sandbox Code Playgroud)
当代码需要只读列表时使用它,但您只想在其中传递一个元素.singletonList
是(线程)安全和快速.
小智 6
回答你不变的问题:
Collections.singletonList
将创建一个不可变的列表。不可变列表(也称为不可修改列表)不能更改其内容。如果您尝试更改内容,添加或删除项目的方法将引发异常。
单例列表仅包含该项目且不能更改。