如何使用 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> 内联将值传递给函数? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

Java集合 LinkedList的原理及使用

java_20 LinkedList类

Java基础——ArrayList与LinkedList

LinkedList内部实现原理

集合之LinkedList(含JDK1.8源码分析)

何时在 Java 中使用 LinkedList 而不是 ArrayList?