Java List Object而不是Array

时间:2016-05-11 21:19:51

标签: java arrays list file-handling listobject

我有一个像这样的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 });。另外,这可能没有文件吗?只是想避免依赖文件。

4 个答案:

答案 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 });

这样的具体类