Konuyu görüntüle
IUCODERS FORUM > Programlama > JAVA > ArrayList of ArrayList
Yazar
eerdil


avatar

Kayıt: 13.10.2009
17.05.2010-17:33 #68728
Arkadaslar yazdıgım bir kod da ArrayList<ArrayList<Integer>> seklinde bir yapı kullanmak istiyorum. Fakat run edince programı istedigim sekilde bir cıktı vermiyor. Ornek kod asagıdaki sekilde.

ArrayList<ArrayList<Integer>> temp = new ArrayList<ArrayList<Integer>>();
ArrayList<Integer> empty = new ArrayList<Integer>();
temp.add(empty);
temp.add(empty);
temp.get(0).add(10);
temp.get(0).add(0,3);
temp.get(1).add(5);

System.out.println(temp.get(0));
System.out.println(temp.get(1));

program cıktısı:
[3, 10, 5]
[3, 10, 5]

fakat ben su sekilde bir cıktı istiyorum.
[3, 10]
[5]
Yani kısacası istedigim arraylist e sayı eklemek istiyorum. Burda sıfırıncı arrayliste ekledigim sayılar 1. arraylisti de yazdırırken gorunuyor.
Bu kodu nasıl duzeltebilirim. Eger boyle yapmak mumkun deilse ne tur bir yapı kullanabilirim. Yardımlarınız icin tesekkurler...





Yazar
idristas


avatar
istanbul
Kayıt: 26.02.2010
17.05.2010-18:07 #68729
eerdil yazdi
 
Arkadaslar yazdıgım bir kod da ArrayList<ArrayList<Integer>> seklinde bir yapı kullanmak istiyorum. Fakat run edince programı istedigim sekilde bir cıktı vermiyor. Ornek kod asagıdaki sekilde.

ArrayList<ArrayList<Integer>> temp = new ArrayList<ArrayList<Integer>>();
ArrayList<Integer> empty = new ArrayList<Integer>();
temp.add(empty);
temp.add(empty);
temp.get(0).add(10);
temp.get(0).add(0,3);
temp.get(1).add(5);

System.out.println(temp.get(0));
System.out.println(temp.get(1));

program cıktısı:
[3, 10, 5]
[3, 10, 5]

fakat ben su sekilde bir cıktı istiyorum.
[3, 10]
[5]
Yani kısacası istedigim arraylist e sayı eklemek istiyorum. Burda sıfırıncı arrayliste ekledigim sayılar 1. arraylisti de yazdırırken gorunuyor.
Bu kodu nasıl duzeltebilirim. Eger boyle yapmak mumkun deilse ne tur bir yapı kullanabilirim. Yardımlarınız icin tesekkurler...


ArrayList<Integer>temp2 = (ArrayList<Integer>)temp.get(0);
temp2.add(10);
temp2.add(0,3);
temp2 = (ArrayList<Integer>)temp.get(1);
temp2.add(5);

şeklinde dene





Yazar
idristas


avatar
istanbul
Kayıt: 26.02.2010
17.05.2010-18:21 #68731
eerdil yazdi
 
Arkadaslar yazdıgım bir kod da ArrayList<ArrayList<Integer>> seklinde bir yapı kullanmak istiyorum. Fakat run edince programı istedigim sekilde bir cıktı vermiyor. Ornek kod asagıdaki sekilde.

ArrayList<ArrayList<Integer>> temp = new ArrayList<ArrayList<Integer>>();
ArrayList<Integer> empty = new ArrayList<Integer>();
temp.add(empty);
temp.add(empty);
temp.get(0).add(10);
temp.get(0).add(0,3);
temp.get(1).add(5);

System.out.println(temp.get(0));
System.out.println(temp.get(1));

program cıktısı:
[3, 10, 5]
[3, 10, 5]

fakat ben su sekilde bir cıktı istiyorum.
[3, 10]
[5]
Yani kısacası istedigim arraylist e sayı eklemek istiyorum. Burda sıfırıncı arrayliste ekledigim sayılar 1. arraylisti de yazdırırken gorunuyor.
Bu kodu nasıl duzeltebilirim. Eger boyle yapmak mumkun deilse ne tur bir yapı kullanabilirim. Yardımlarınız icin tesekkurler...


temp.add(empty);
temp.add(empty);
sen iki defa aynı elemanı ekliyorsun. dolayısıyla 1. ve 2. arraylist zaten aynı arraylist

ArrayList<Integer> empty = new ArrayList<Integer>();
temp.add(empty);
empty = new ArrayList<Integer>();
temp.add(empty);

şeklinde olmalı
ya da

temp.add(new ArrayList<Integer>());
temp.add(new ArrayList<Integer>());

şeklinde de olur.







Yazar
eerdil


avatar

Kayıt: 13.10.2009
17.05.2010-18:23 #68732
Bu sekilde de aynı sonucu veriyor. Problemi daha acık anlatsam daha iyi olur belki. Skip List implement etmek istiyorum. Buna gore dosyadan sayı ve hangi seviyede olacagı veriliyor. Ornegin

10 1 20 2 13 3 14 3 8 1 seklinde bir input verildigi zaman cıktı su sekilde olmalı

8 10 13 14 20 // 1. seviye (sayılar kendi seviyelerinden baslanıp alt butun seviyelere ekleniyor bu yuzden 1. seviyede tum sayılar olacak ayrıca sayılar sıralı olarak eklenecek)

13 14 20 // 2. seviye

20 // 3. seviye

Burada seviye sayısı ve her seviyede kac sayı olacagı belli olmadıgı icin ArrayList<ArrayList<Integer>> kullanmayı dusundum.





Yazar
idristas


avatar
istanbul
Kayıt: 26.02.2010
17.05.2010-18:28 #68734
eerdil yazdi
 
Bu sekilde de aynı sonucu veriyor. Problemi daha acık anlatsam daha iyi olur belki. Skip List implement etmek istiyorum. Buna gore dosyadan sayı ve hangi seviyede olacagı veriliyor. Ornegin

10 1 20 2 13 3 14 3 8 1 seklinde bir input verildigi zaman cıktı su sekilde olmalı

8 10 13 14 20 // 1. seviye (sayılar kendi seviyelerinden baslanıp alt butun seviyelere ekleniyor bu yuzden 1. seviyede tum sayılar olacak ayrıca sayılar sıralı olarak eklenecek)

13 14 20 // 2. seviye

20 // 3. seviye

Burada seviye sayısı ve her seviyede kac sayı olacagı belli olmadıgı icin ArrayList<ArrayList<Integer>> kullanmayı dusundum.


temp.add(new ArrayList<Integer>());
temp.add(new ArrayList<Integer>());

temp'e bu şekilde ekle





Yazar
eerdil


avatar

Kayıt: 13.10.2009
17.05.2010-18:28 #68735
2. mesajını simdi gordum bu sekilde dogru calıstı program.

Tesekkur ederim ilgilendigin icin.





Del.icio.us
Digg
Facebook
Furl
Google
Blink
Simpy
Spurl
Y! MyWeb