我具有一个简单的功能:
private void function(LinkedList<String> a, LinkedList<String> b)
我们已经知道,如果这些参数仅是字符串,则将价值传递在线很容易,例如:
function("aaa", "bbb")
但是有没有办法通过内联链接列表?
我尝试了:
function(["A", "B", "C"], ["A", "B"])
但行不通。
将类型从LinkedList
更改为List
接口,然后您可以使用Arrays.asList(T...)
,例如
function(Arrays.asList("A", "B", "C"), Arrays.asList("A", "B"))
有一些方法可以做到这一点,但是我不确定它们会比非内线方式更清晰/短。
例如,使用Stream
API:
function (Stream.of("A","B","C").collect(Collectors.toCollection(LinkedList::new)),
Stream.of("A","B").collect(Collectors.toCollection(LinkedList::new)));
,如果您不需要特定的List
实现(例如LinkedList
),则可以使用Array.asList
,并且不介意所得的List
是固定尺寸的。
,或者您可以使用Array.asList
并仍然获得LinkedList
:
function(new LinkedList<String>(Arrays.asList("A", "B", "C")),
new LinkedList<String>(Arrays.asList("A", "B")));
有一种方法,没有使用任何框架,但是扰流板警报对我来说并不好:
function((LinkedList<String>) Arrays.asList("A", "B", "C"),
(LinkedList<String>) Arrays.asList("A", "B"));
如果您仅使用linkedlist来连接字符串,那么您可以使用StringBuilder,可以完成工作并看起来更好:
public void doSomething() {
function(new StringBuilder()
.append("A")
.append("B")
.append("C"),
new StringBuilder()
.append("A")
.append("B"));
}
private void function(StringBuilder a, StringBuilder b) { ... }
欢呼,尼古拉斯