Java 列表对象而不是数组

Java List Object instead of an Array

我有一张这样的 Java 地图:

Map<String, Object> data = new HashMap<String, Object>();

我正在对其执行以下操作:

data.put("case_ids", new int[] { 31527 });

其中 case_ids 是第 3 方 API 的属性之一。但是,API 抛出 incorrect API request error 并建议我使用 List 对象而不是 Array for:

data.put("case_ids", new int[] { 31527 });

不是List专家,有什么建议吗?喜欢 data.put("case_ids", new List[] { 31527 }); ?

已编辑:扩展我当前的问题(以避免重新发布或类似问题)。如果我有大量用于上述放置操作的值并想创建一个已知值列表怎么办。我认为提及以逗号分隔的值列表(如 31527、31528、31529、31530、31531 等)是不正确的方法。我宁愿将其存储在某处,并在此处将其称为输入 - data.put("case_ids", new int[] { input });。另外,没有文件可以吗?只是想避免对文件的依赖。

从已知值创建列表的最简单方法可能是

Arrays.asList(31527)

那会让你打电话

data.put("case_ids", Arrays.asList(31527));

假设 API 接受 List 作为值。没有 API 文档或错误消息,我们无法判断它真正接受的是什么。

还有其他创建List的方式,比如new ArrayList<>()等,查看实现List接口的javadoc和具体的类即可.


更新:如果您不想要外部文件,我想您可以在源代码中包含数字。最简单的选择是将它们作为静态字段放在某处

public static final int[] VALUES = {1, 2, 3, /*...*/};

您可以将其变成 List(在 Java 8 中)和 Arrays.stream(VALUES).boxed().collect(Collectors.toList())(参见 here)。

我建议使用 Guava library,您可以直接使用

创建更安全的不可变列表
public static final List<Integer> VALUES = ImmutableList.of(1, 2, 3) 

如果您不喜欢像这样在代码中包含所有值,那么您可以从资源文件中读取它们,但那是另一个问题。

您可以使用以下格式

data.put("case_ids", Arrays.asList(new Integer[] { 31527 }));

如果你有一个整数数组,就是你在评论中提到的那个,那么你可以使用

int [] cases = { 10,20,30};
data.put("case_ids", Arrays.asList(cases));
List<Integer> mList = new ArrayList<Integer>;
mList.add(31527);
data.put("case_ids", mList);

列表是一个接口。使用像 data.put("case_ids", new ArraList<Integer>{ 31527 });

这样的具体 class