0

我有一个这样的Java地图:

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

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

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

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

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

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

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

4

4 回答 4

5

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

Arrays.asList(31527)

那会让你打电话

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

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

还有其他方法可以创建List,例如new ArrayList<>(),等等,只需查看实现该接口的javadoc和具体类即可。List


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

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

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

我建议使用Guava 库,您可以在其中直接创建更安全的不可变列表

public static final List<Integer> VALUES = ImmutableList.of(1, 2, 3) 

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

于 2016-05-11T21:21:59.633 回答
1

您可以使用以下格式

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

如果您有一个整数数组,您提到了评论,那么您可以使用

int [] cases = { 10,20,30};
data.put("case_ids", Arrays.asList(cases));
于 2016-05-11T21:23:25.023 回答
0
List<Integer> mList = new ArrayList<Integer>;
mList.add(31527);
data.put("case_ids", mList);
于 2016-05-11T21:23:49.590 回答
0

列表是一个接口。使用一个具体的类,比如data.put("case_ids", new ArraList<Integer>{ 31527 });

于 2016-05-11T21:24:11.710 回答