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 });.另外,这可能没有文件吗?只是想避免依赖文件.
可能从已知值创建列表的最简单方法是
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)
如果您不喜欢像这样在代码中包含所有值,那么您可以从资源文件中读取它们,但那将是另一个问题.