簡體   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