2011-11-30 16 views
16

Jaka jest składnia do tworzenia listy tablic w języku Java?Lista tablic w języku Java

Próbowałem następujące:

List<int[]> A = new List<int[]>(); 

i wiele innych rzeczy.

Potrzebuję móc zmienić kolejność tablic int, ale elementy tablic int nie muszą być zmieniane. Jeśli nie jest to możliwe, dlaczego?

Dziękuję.

+1

Nie można utworzyć wystąpienia 'List', ponieważ jest to interfejs. Czy chcesz listę tablic, czy dobrze ci z listą? – birryree

+1

Robię LinkedLists z LinkedLists zamiast rozwiązania przy użyciu int []. Masz rację, że nie tworzysz list, przeoczyłem to, kiedy pisałem. Przepraszam. – Chet

+1

Brzmi jak dużo kosztów ogólnych. – Woot4Moo

Odpowiedz

39

Po pierwsze, nie można wykonać new List(); jest to interfejs.

Aby zrobić listę int tablic, zrobić coś takiego:

List<int[]> myList = new ArrayList<int[]>(); 

PS: Zgodnie z komentarzem, pakiet na liście jest java.util.List i ArrayList java.util.ArrayList

+1

Kompilator daje mi to: Lista typów nie jest typowa; nie można go sparametryzować za pomocą argumentów: Chet

+7

@Chet: Prawdopodobnie masz niewłaściwy import - powinieneś używać 'java.util.List', która z pewnością * jest * ogólna. –

+3

@Chet musisz zaimportować java.util.List; jak również java.util.ArrayList; do uruchomienia kodu, który tutaj napisałem. – gprathour

6
List<Integer[]> integerList = new ArrayList<Integer[]>(); 

użyć obiektu zamiast prymitywnych, chyba że jest to przed Java 1.5, ponieważ uchwyty autoboxing automatycznie.

Jeśli chodzi o sortowanie idzie:

Collections.sort(integerList); //Sort the entire List 

i dla każdej tablicy (prawdopodobnie to, co chcesz)

for(Integer[] currentArray : integerList) 
{ 
    Arrays.sort(currentArray); 
} 
+6

Nie ma potrzeby używania "Integer []" zamiast "int []". Nie możesz używać typów pierwotnych jako argumentów typu, ale możesz użyć * tablic * typów pierwotnych. –

+1

W tym prostym przykładzie na pewno się zgodzę. W idealnym świecie funkcja wzięłaby to: 'Collection ', a następnie pobieraj wartości według potrzeb. – Woot4Moo

+3

Nie sądzę, że mamy * prawie * wystarczająco dużo informacji, abyś mógł dokonać takiego osądu, szczerze mówiąc. –

3

Lista jest interfejsem, a nie klasa. Musisz wybrać rodzaj listy. W większości przypadków wybrano ArrayList.

List a = new ArrayList(); 

Wspominałeś, że chcesz przechowywać w nim tablicę int, aby można było określić typ listy.

List<int[]> a = new ArrayList<int[]>(); 

Chociaż można mieć kolekcję (taką jak lista) "int []", nie można mieć kolekcji "int". Dzieje się tak, ponieważ tablice są obiektami, ale "int" jest prymitywne.