2011-03-03 24 views
14

ArrayList Çift dönüştürün. çift dizi

double [] firstValueArray ; 

ArrayList <Double> firstValueList = new ArrayList (Arrays.asList(firstValueArray));

başka liste ile bu listeyi karşılaştırarak ve başka çift değişkene atamayı ediyorum.

beni bu hatanın nedenini bildirin.

+5

'(doule d: doubleArray) için arrayList.add (d); ' – bestsss

cevap

24

Ne yazık ki, Arrays.asList(..) ilkel çalışmaz. Apache commons-lang

Double[] doubleArray = ArrayUtils.toObject(durationValueArray); 
List<Double> list = Arrays.asList(doubleArray); 
+0

Teşekkür çok Bozho. Sorunu çözdü. – gishara

17

Guava 'ın versiyonu bile kısadır vardır:

List<Double> list = Doubles.asList(doubleArray); 

Referans:

Not: Bu bir varargs yöntemidir. Tüm (ancak karşılık gelen kutulamasının/kutulu Çeşidi !!) yöntemleri, aynı tipte bir dizi kullanılarak çağrılabilir varargs. Bu iki aramalar eşdeğerdir:

Doubles.asList(new double[]{1d,2d}); 
Doubles.asList(1d,2d); 

Ayrıca tam travers yapmaz Guava versiyonu, bunların erişilebilir sadece Nesneler ilkeller dönüştürerek, ilkel dizinin canlı Liste görünümü var.

ArrayList<Double> firstValueList = new ArrayList<Double>(); 
for(double d : firstValueArray) firstValueList.add(d); 
+0

varargs yöntemi nedir? ve iki çağrı nasıl eşdeğerdir? – JAVA

+0

@sunny mekanizması burada açıklanmıştır: [Java Eğitimi: Argümanların Sayısı] (http://docs.oracle.com/javase/tutorial/java/javaOO/arguments.html#varargs). Anahtar sözcük "Bir diziyi el ile oluşturmanın kısayolu" –

+0

"Doubles.asList (double ... backingArray)" tarafından döndürülen listenin, listeye öğeler eklemek gibi herhangi bir değişikliğe izin vermediği anlaşılıyor. add' veya 'addAll'. Doküman için güncelleştirilmiş bağlantı: https://google.github.io/guava/releases/19.0/api/docs/index.html?com/google/common/primitives/Doubles.html –

3

Kredi

DoubleStream.of(doublesArray).boxed().collect(Collectors.toCollection(ArrayList::new)); 

Bu one-liner herhangi bir özel kütüphaneler.

12

bir uygulama olarak bir ArrayList dönen kullanmak sonra gerekiyorsa bu

DoubleStream.of(doublesArray).boxed().collect(Collectors.toList()); 

ile elde edilir Java 8 Akışları API kullanarak: cevap olmalıdır yorum için bestsss için