2013-07-05 22 views
8

Czy istnieje sposób zdefiniowania ArrayList z typem double? I próbuje zarównoJava ArrayList of Doubles

ArrayList list = new ArrayList<Double>(1.38, 2.56, 4.3); 

i

ArrayList list = new ArrayList<double>(1.38, 2.56, 4.3); 

pierwszy kod wykazały, że konstruktor ArrayList<Double>(double, double, double) jest niezdefiniowany, a drugi kod wykazuje, że wymiary są wymagane po double.

Odpowiedz

20

Spróbuj tego:

List<Double> list = Arrays.asList(1.38, 2.56, 4.3); 

która zwraca stałym rozmiarze listę.

Jeśli potrzebujesz listy rozszerzalny, przekazać ten wynik do konstruktora ArrayList:

List<Double> list = new ArrayList<>(Arrays.asList(1.38, 2.56, 4.3)); 
+0

Dzięki. Wiedziałem, że czegoś mi brakuje. Odpowiedzi wszystkich pomogły, ale zmiana typu na List zmyśliła. –

+2

['Arrays.asList'] (http://docs.oracle.com/javase/7/docs/api/java/util/Arrays.html#asList (T ...)) nie zwraca niezmodyfikowanej listy. Zwraca listę o stałym rozmiarze. Możesz "ustawić" elementy, ale nie możesz "dodać" ani "usunąć". – Jeffrey

+0

@Jeffrey Dzięki za wiadomość! Nigdy nie zdawałem sobie sprawy, że ... Zawsze zakładałem, że nie można tego zmodyfikowad, ponieważ eksplodowało, gdy próbowałem dodać. Nigdy nie próbowałem * modyfikować * przez zestaw. Odpowiedź zaktualizowana. Twoje zdrowie. – Bohemian

18
ArrayList list = new ArrayList<Double>(1.38, 2.56, 4.3); 

musi zostać zmienione na:

List<Double> list = new ArrayList<Double>(); 
list.add(1.38); 
list.add(2.56); 
list.add(4.3); 
+3

Albo jeszcze lepiej: 'Lista doubleList = new ArrayList (); '. Zobacz [Co to znaczy "programować do interfejsu"?] (Http://stackoverflow.com/q/383947/1065197) –

2

Można użyć Arrays.asList dostać jakąś listę (niekoniecznie ArrayList), a następnie użyć AddAll(), aby go dodać do ArrayList:

new ArrayList<Double>().addAll(Arrays.asList(1.38L, 2.56L, 4.3L)); 

Jeśli używasz java6 (lub wyższej) można również użyć konstruktora ArrayList, które ma inną listę:

new ArrayList<Double>(Arrays.asList(1.38L, 2.56L, 4.3L)); 
4

spróbować tego,

ArrayList<Double> numb= new ArrayList<Double>(Arrays.asList(1.38, 2.56, 4.3)); 
3

napotkania problemu, ponieważ nie można skonstruować ArrayList i wypełnić go w tym samym czasie. Albo trzeba go utworzyć, a następnie ręcznie wypełnić go jako takie:

ArrayList list = new ArrayList<Double>(); 
list.add(1.38); 
... 

albo, alternatywnie, jeżeli jest to bardziej wygodne dla Ciebie, możesz zapełnić ArrayList od prymitywnej tablicy zawierającej swoje wartości. Na przykład:

Double[] array = {1.38, 2.56, 4.3}; 
ArrayList<Double> list = new ArrayList<Double>(Arrays.asList(array)); 
1

Spróbuj tego:

List<Double> l1= new ArrayList<Double>(); 
l1.add(1.38); 
l1.add(2.56); 
l1.add(4.3); 
1

Korzystanie guava

Doubles.asList(1.2, 5.6, 10.1); 

lub niezmienna listy

ImmutableList.of(1.2, 5.6, 10.1);