繁体   English   中英

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是第三方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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM