我有一个像这样的Java地图:
Map<String, Object> data = new HashMap<String, Object>();
我正在对它进行以下操作:
data.put("case_ids", new int[] { 31527 });
其中case_ids是第三方API的属性之一。但是,该API抛出incorrect API request error
并建议我使用List对象而不是Array:
data.put("case_ids", new int[] { 31527 });
不是List的专家,有什么建议吗?喜欢data.put("case_ids", new List[] { 31527 });
?
已编辑 :扩展我当前的问题(以避免重新发布或类似问题)。如果我为上面放置操作设置了大量值并想要创建已知值列表,该怎么办?我不认为这是一个正确的方法来提及由逗号分隔的值列表,如31527,3152,31529,31530,31531,...等。我宁愿将它存储在某处,只需将其作为输入调用 - data.put("case_ids", new int[] { input });
。另外,这可能没有文件吗?只是想避免依赖文件。
答案 0 :(得分:5)
如何从已知值创建列表的最简单方法是
Arrays.asList(31527)
这会打电话
data.put("case_ids", Arrays.asList(31527));
假设API接受List
作为值。没有API文档或错误消息,我们无法分辨它真正接受的内容。
还有其他方法可以创建List,例如new ArrayList<>()
等,只需查看javadoc和实现List
接口的具体类。
更新:如果您不想要外部文件,我想您可以在源代码中输入数字。最简单的选择是将它们作为静态字段放在某处
public static final int[] VALUES = {1, 2, 3, /*...*/};
您可以使用List
转换为Arrays.stream(VALUES).boxed().collect(Collectors.toList())
(在Java 8中)(请参阅here)。
我建议您使用Guava library,而不是直接使用
创建更安全的不可变列表public static final List<Integer> VALUES = ImmutableList.of(1, 2, 3)
如果你不想像这样在代码中包含所有值,那么你可以从资源文件中读取它们,但这将是另一个问题。
答案 1 :(得分:1)
您可以使用以下格式
data.put("case_ids", Arrays.asList(new Integer[] { 31527 }))
;
如果您有一个整数数组,那么您提到了注释,那么您可以使用
int [] cases = { 10,20,30};
data.put("case_ids", Arrays.asList(cases));
答案 2 :(得分:0)
List<Integer> mList = new ArrayList<Integer>;
mList.add(31527);
data.put("case_ids", mList);
答案 3 :(得分:0)
列表是一个界面。使用像data.put("case_ids", new ArraList<Integer>{ 31527 });