如何将值传递给具有内联链接列表的函数<String>?



我具有一个简单的功能:

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) { ... }

欢呼,尼古拉斯

最新更新