Java List Object而不是Array

Pra*_*wal 0 java arrays list file-handling listobject

我有这样的Java地图:

Map<String, Object> data = new HashMap<String, Object>();
Run Code Online (Sandbox Code Playgroud)

我正在执行以下操作:

data.put("case_ids", new int[] { 31527 });
Run Code Online (Sandbox Code Playgroud)

其中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 });.另外,这可能没有文件吗?只是想避免依赖文件.

Mif*_*eet 5

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

Arrays.asList(31527)
Run Code Online (Sandbox Code Playgroud)

这会打电话给你

data.put("case_ids", Arrays.asList(31527));
Run Code Online (Sandbox Code Playgroud)

假设API接受a List作为值.没有API文档或错误消息,我们无法分辨它真正接受的内容.

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


更新:如果你不想要一个外部文件,我想你可以在源代码中输入数字.最简单的选择是将它们作为静态字段放在某处

public static final int[] VALUES = {1, 2, 3, /*...*/};
Run Code Online (Sandbox Code Playgroud)

您可以将其转换为List(在Java 8中)Arrays.stream(VALUES).boxed().collect(Collectors.toList())(参见此处).

我建议使用Guava库,而不是直接创建更安全的不可变列表

public static final List<Integer> VALUES = ImmutableList.of(1, 2, 3) 
Run Code Online (Sandbox Code Playgroud)

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