[英]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是第三方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 });
。 另外,没有文件也可以做到吗? 只是想避免依赖文件。
也许从已知值创建列表的最简单方法是
Arrays.asList(31527)
那会打给你的
data.put("case_ids", Arrays.asList(31527));
假设API接受List
作为值。 没有API文档或错误消息,我们无法确定它真正接受什么。
还有其他创建列表的方法,例如new ArrayList<>()
等,只需签出实现List
接口的javadoc和具体类。
更新 :如果您不需要外部文件,我想您可以在源代码中包含数字。 最简单的选择是将它们放置在某个静态字段中
public static final int[] VALUES = {1, 2, 3, /*...*/};
您可以使用Arrays.stream(VALUES).boxed().collect(Collectors.toList())
将其转换为List
(在Java 8中Arrays.stream(VALUES).boxed().collect(Collectors.toList())
(请参阅此处 )。
我建议您改用Guava库 ,在这里您可以直接创建更安全的不可变列表
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 });
这样的具体类data.put("case_ids", new ArraList<Integer>{ 31527 });
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.