2016-06-25 8 views
-3

zum Beispiel habe ich int a = 1; int b = 2;Java - ArrayList mit mehreren Int per Index

Wie kann ich beiden Werte in einen Index für meine Arraylist und die Lage sein, sie zu lesen. (Ich brauche diese in der gleichen Klasse zu tun, wo die Liste ist)

Zum Beispiel mit einem Pseudo-Code Ich muss in der Lage sein zu tun

Arraylist<integer> mylist = new Arraylist<integer> ; 

int c = mylist.getnode(1).a //gets the value of a in node 1 
int d = mylist.getnode(1).b //gets the value of b in node 1 
+1

wie ein 2D-Array? –

+0

Ihre Frage ist nicht klar, Sie leben immer noch in der Wolke, können Sie sich beruhigen und genau sein, was Sie wollen und Beispiel geben? –

+0

Wenn es möglich wäre, möchte ich es mit 1D-Array. Ich möchte in der Lage Beispiel Pseudocode c = Mylist.getnode (1) .a (gibt c den Wert von a im ersten Knoten) d = mylist.getnode (1) .b – Syarx

Antwort

2

Erstellen Sie eine Klasse, die a und b enthält. Erstellen Sie nun eine Liste mit Instanzen dieser Klasse.

class Tuple { 
public int a, b; 
} 
ArrayList<Tuple> mylist = new ArrayList<>(); 
int a = mylist.get(0).a; 
+0

ist, die es zu lesen ist. um es hinzuzufügen, mache ich mylist.add (0) .a; ?? – Syarx

+1

'Set' ist ein _sehr_schlechter Name für diese Klasse. Erstens ist dies kein [set] (https://en.wikipedia.org/wiki/Set_%28abstract_data_type%29). Zweitens gibt es bereits eine [Java-Klasse] (http://docs.oracle.com/javase/7/docs/api/java/util/Set.html) dieses Namens. Wie wäre es mit 'Tuple' oder' Pair'? –

+0

1) Benennen Sie keinen Klassensatz. 2) Nicht einfach plump Code für eine Antwort ohne Erklärung. –

0

Dies ist etwas ineffizient und hat Begrenzung für variable index, die durch die list.size() begrenzt ist, aber hier gehen Sie

ArrayList<HashMap> list = new ArrayList<HashMap>(); 
//index is where you want to place your element 
if(list.size() > index){ 
    list.get(index).put(key, value); # in your case key = a, value = 1 
}else if(list.size() == index){ 
    list.add(new HashMap<String,Integer>()); 
    list.get(index).put(key, value); # in your case key = a, value = 1 
}else { 
    System.out.println("Index out of bounds"); 
} 

Jetzt können Sie Ihre Werte zugreifen:

list.get(<some index>).get(<some_key); 
#i.e list.get(1).get("a"); 

Hinweis: Wenn Sie den obigen Code verwenden, können Sie nicht auf den zufälligen Index zugreifen, der außerhalb von list.size() - 1 liegt. index Variable kann atmost list.size()

Der beste Weg, dies zu tun, ist Ihre eigene Klasse zu erstellen, welche Variablen für a und b hat. Dann erstellen Sie eine list = ArrayList<YourClass>();. Das ist viel mehr sauber

Grund ich oben genannten Code ist ineffizient, weil ich HashMap naiv erstellen 16 Steckplätze wissen, wenn Sie es ohne feste Größe initialisieren, auch wenn Sie diese Zahl Container überschreiten nicht nur um ein Element zu erhöhen, es verdoppelt die Größe. Wenn Sie wissen, wie viele Elemente Sie benötigen, können Sie sie mit dieser Nummer initialisieren.