2016-05-11 4 views
0

ich eine Java-Karte wie dieser hava:Java Liste Objekt statt einem Array

Map<String, Object> data = new HashMap<String, Object>(); 

Und ich darauf folgende Operation am durchführen:

data.put("case_ids", new int[] { 31527 }); 

Wo case_ids eines des Attributs des 3. ist Party-API. Allerdings wirft die API incorrect API request error und schlägt mich List-Objekt zu verwenden, anstatt eines Arrays für:

data.put("case_ids", new int[] { 31527 });

kein Experte von List, irgendwelche Vorschläge? Wie data.put("case_ids", new List[] { 31527 });?

EDITED: meine aktuelle Frage Erweiterung (repost oder ähnliche Frage zu vermeiden). Was ist, wenn ich einen riesigen Satz von Werten für die oben genannte Operation habe und eine Liste mit bekannten Werten erstellen möchte? Ich glaube nicht, dass es eine korrekte Art ist, die Liste von Werten zu erwähnen, die durch Kommas getrennt sind, wie 31527, 31528, 31529, 31530, 31531, usw. Ich würde das lieber irgendwo speichern und das hier einfach als Eingabe nennen - data.put("case_ids", new int[] { input });. Ist es möglich, auf eine Datei zu verzichten? Ich möchte nur die Abhängigkeit von der Datei vermeiden.

Antwort

1

könnten Sie das folgende Format

data.put("case_ids", Arrays.asList(new Integer[] { 31527 }));

Wenn Sie ein Array von ganzen Zahlen, die einen haben Sie die Kommentare erwähnt haben, dann können Sie

int [] cases = { 10,20,30}; 
data.put("case_ids", Arrays.asList(cases)); 
+0

Was ist, wenn ich mehr als 1 int Wert wie '31527,31528' übergeben möchte? Ich versuche, von den Konstanten zu lesen var wie: 'public static final int [] CASES = { 22245, 22466, 22467, 27765, 27772};' und dann Aufruf von 'data.put (" case_ids ", Arrays.asList (new Integer [] {CASES})) scheint nicht zu funktionieren. Sehen Sie meinen bearbeiteten Frageteil. –

+0

sollte es sein Arrays.asList (CASES) das ist alles –

+0

Nein. Das funktioniert nicht für mich. –

5

Wahrscheinlich wie der einfachste Weg ist, eine Liste von bekannten Werten erstellen

Arrays.asList(31527) 

, dass Ihr Anruf

data.put("case_ids", Arrays.asList(31527)); 

Annahme, die API machen würde ein List als Wert annimmt. Ohne die API-Dokumentation oder die Fehlermeldung können wir nicht sagen, was sie wirklich akzeptiert.

Es gibt andere Möglichkeiten, wie eine Liste zu erstellen, wie, etc., nur die javadoc und konkrete Klassen, die die List Schnittstelle implementieren.


aktualisieren: Wenn Sie nicht über eine externe Datei möchte ich nehme an, Sie die Zahlen im Quellcode mit mit feinen sind. Die einfachste Möglichkeit besteht darin, sie irgendwo als statisches Feld zu haben

public static final int[] VALUES = {1, 2, 3, /*...*/}; 

, die Sie in List (in Java 8) mit Arrays.stream(VALUES).boxed().collect(Collectors.toList()) drehen können (siehe here).

ich mit Guava library stattdessen empfehlen, wo Sie eine sicherere unveränderliche Liste direkt mit

public static final List<Integer> VALUES = ImmutableList.of(1, 2, 3) 

erstellen Wenn Sie nicht wie alle Werte im Code wie folgt mit, dann können Sie sie aus einer Ressourcendatei lesen , aber das wäre für eine andere Frage.

+0

Danke, das funktionierte und API akzeptiert List. –

+0

Ich habe gerade meine aktuelle Frage bearbeitet und erweitert (Vermeidung von repost und ähnlichen Fragen). Wie kann ich erweitern, um mehrere Werte als Teil der Liste zu unterstützen? Stellen Sie sich 1000 verschiedene Werte vor und schreiben Sie sie direkt hier, ist das nicht der richtige Weg? Eher einige Datei/andere Konstanten Klasse? –

+0

Ich habe meine Antwort erweitert. Sie können einen besseren Rat bekommen, wenn Sie Ihren Anwendungsfall genauer erklären, zB was sind die Zahlen, woher kommen sie usw. – Mifeet

0
List<Integer> mList = new ArrayList<Integer>; 
mList.add(31527); 
data.put("case_ids", mList); 
+2

* "Jede Antwort, die den Fragesteller in die richtige Richtung bringt, ist hilfreich, aber versuchen Sie, Einschränkungen, Annahmen oder Vereinfachungen in Ihrer Antwort zu erwähnen." Die Kürze ist akzeptabel, aber umfassendere Erklärungen sind besser **. "* - [ Wie schreibe ich eine gute Antwort?] (Http://stackoverflow.com/help/how-to-answer) –

+0

danke für den Hinweis :) –

+0

Dank Oussema, habe ich gerade meine Frage bearbeitet und möchte eine Unterstützung für mehrere haben Werte in der Liste. –

0

Liste verwenden eine Schnittstelle ist. Verwenden Sie eine konkrete Klasse wie data.put("case_ids", new ArraList<Integer>{ 31527 });

+1

Nein, das wird nicht einmal kompiliert. – Mifeet