将数组全部转换为链表

问题描述 投票:0回答:3

我目前正在编写一个 JUnit 测试,需要树图作为预期值。

所说的 TreeMap 看起来像这样:

Map<Integer, LinkedList<String>> expected = new TreeMap<>();

我用应该从测试返回的数据填充了所述树图:

    expected.put(1, (LinkedList<String>) Arrays.asList("18_2_2_3_java.lang.String_", "27_0_0_93_java.sql.Timestamp_", "256_6_6_0_java.lang.String_", "200_6_6_12_java.lang.String_", "8_0_0_12_java.lang.String_", "4_2_2_5_java.lang.Integer_", "5_6_6_5_java.lang.Short_", "23_0_0_93_java.util.Date_", "5_0_0_5_java.lang.Integer_", "35_0_0_12_java.lang.String_", "20_6_6_0_java.lang.String_", "19_0_0_12_java.util.Date_", "12_6_6_12_java.lang.String_", "112_0_0_12_java.lang.String_", "1_0_0_5_java.lang.Short_", "4_0_0_2_java.lang.String_", "7_6_6_12_java.lang.String_", "3_0_0_5_java.lang.Integer_", "0_6_6_5_java.lang.Boolean_", "-1_0_0_2005_byte[]_", "19_6_6_1_java.lang.String_", "3_0_0_4_java.lang.String_", "4365_6_6_93_java.sql.Timestamp_", "0_6_6_5_java.lang.Integer_", "23_6_6_93_java.sql.Timestamp_", "1_250_250_12_java.lang.String_"));
    expected.put(2, (LinkedList<String>) Arrays.asList("2_6_6_12_java.lang.String_", "-1_6_6_2005_java.lang.String_", "20_0_0_12_java.lang.Long_", "25_0_0_12_java.lang.String_", "2_6_6_5_java.lang.Integer_", "500_0_0_12_java.lang.String_", "5_6_6_5_java.lang.Boolean_", "128_6_6_0_java.lang.String_", "512_6_6_12_java.lang.String_", "6_2_2_3_java.math.BigDecimal_", "25_6_6_12_java.lang.String_", "4_6_6_12_java.lang.String_", "19_6_6_0_java.lang.String_", "12_0_0_12_java.lang.String_", "1_6_6_5_java.lang.Boolean_", "2_0_0_5_java.lang.Short_", "50_6_6_12_java.lang.String_", "0_6_6_0_java.lang.Boolean_", "0_0_0_5_java.lang.Boolean_", "-1_6_6_-1_java.lang.String_", "4_0_0_12_java.lang.String_", "10_0_0_4_java.lang.Boolean_", "80_0_0_12_java.lang.String_", "20_8_8_3_java.math.BigDecimal_", "18_3_3_3_java.math.BigDecimal_"));
    expected.put(3, (LinkedList<String>) Arrays.asList("150_0_0_12_java.lang.String_", "0_6_6_0_java.sql.Timestamp_", "0_6_6_0_java.lang.Integer_", "1_0_0_5_java.lang.Boolean_", "32_6_6_12_java.lang.String_", "4_0_0_93_java.sql.Timestamp_", "2_0_0_12_java.lang.String_", "0_6_6_91_java.util.Date_"));
    expected.put(4, (LinkedList<String>) Arrays.asList("1024_6_6_1_java.lang.String_", "-1_6_6_-4_byte[]_", "30_6_6_12_java.lang.String_", "27_6_6_93_java.sql.Timestamp_", "40_0_0_12_java.lang.String_", "2_6_6_5_java.lang.String_", "2_2_2_5_java.lang.Short_", "2_0_0_4_java.lang.Integer_", "2000_6_6_12_java.lang.String_", "120_6_6_12_java.lang.String_", "4365_6_6_93_java.util.Date_", "256_6_6_12_java.lang.String_"));
//There is a lot more but you get the point

你们中的一些人可能已经注意到了;列表是错误的。 它们必须是链接列表。

Eclipse 建议将列表类型转换为链接列表,这是我尝试过的,但没有成功。

我对这个很迷茫。

java arrays junit linked-list
3个回答
1
投票

lance-java 的建议可以用,但是相当麻烦。

我建议定义一个这样的方法:

public static LinkedList<String> linkedList(String... values) {
  return new LinkedList<>(List.of(values));
}

然后在测试中调用它:

expected.put(1, linkedList("18_2_2_3_java.lang.String_", "27_0_0_93_java.sql.Timestamp_" /* etc */);
// etc

只是稍微整洁一点。


1
投票

你可以做

LinkedList<String> list = Stream.of("one", "two", "three").collect(Collectors.toCollection(LinkedList::new));

LinkedList<String> list = new LinkedList<>(List.of("one", "two", "three"));

0
投票

Eclipse 建议将列表类型转换为链接列表,这是我尝试过的,但没有成功。

expected.put(1, (LinkedList<String>) Arrays.asList("18_2_2_3_java.lang.String_",
                ^^^^^^^^^^^^^^^^^^^^ ~ !!

您无法将 ArrayList 转换为 LinkedList。您需要创建一个新的 LinkedList 并将该列表传递给构造函数,如下所示:

expected.put(1, new LinkedList<String>(Arrays.asList("18_2_2_3_java.lang.String_", "27_0_0_93_

有关更深入的参考,请参阅 Arrays.asList 的实现。

您也可以使用 List.of 代替 Arrays.asList。

© www.soinside.com 2019 - 2024. All rights reserved.