如何使用 LinkedList<String> 内联将值传递给函数? [复制]
Posted
技术标签:
【中文标题】如何使用 LinkedList<String> 内联将值传递给函数? [复制]【英文标题】:How to pass values to a function with LinkedList<String> inline? [duplicate] 【发布时间】:2017-04-06 12:10:15 【问题描述】:我有一个简单的功能,例如:
private void function(LinkedList<String> a, LinkedList<String> b)
我们已经知道,如果这些参数只是字符串,则内联传递值会很容易,例如:
function("aaa", "bbb")
但是有没有办法传递内联的 LinkedList?
我试过了:
function(["A", "B", "C"], ["A", "B"])
但它不起作用。
【问题讨论】:
【参考方案1】:把LinkedList
的类型改成List
接口,然后就可以用Arrays.asList(T...)
like了
function(Arrays.asList("A", "B", "C"), Arrays.asList("A", "B"))
【讨论】:
【参考方案2】:有办法做到这一点,但我不确定它们是否会比非内联方式更清晰/更短。
例如,使用Stream
API:
function (Stream.of("A","B","C").collect(Collectors.toCollection(LinkedList::new)),
Stream.of("A","B").collect(Collectors.toCollection(LinkedList::new)));
如果您不需要特定的List
实现(例如LinkedList
)并且不介意生成的List
大小固定,则可以使用Array.asList
。
或者您可以使用Array.asList
并仍然获得LinkedList
:
function(new LinkedList<String>(Arrays.asList("A", "B", "C")),
new LinkedList<String>(Arrays.asList("A", "B")));
【讨论】:
【参考方案3】:有一种方法,不使用任何框架,但剧透警告,它对我来说看起来没有任何好处:
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) ...
干杯,尼古拉斯
【讨论】:
以上是关于如何使用 LinkedList<String> 内联将值传递给函数? [复制]的主要内容,如果未能解决你的问题,请参考以下文章