Merhabalar...

Elimde stringlerden oluşan bir ArrayList mevcut ve bu stringler istisnasız sayı ile başlıyor sayılar artan sırada...Fakat 2 noktada artmıyor ben bu artmayan yerlerden kesip başka arraylist yapısına atmak istiyorum böylece elimde 3 tane artan sırada arraylist olacak... Nasıl yapabilirim ben bir kod denedim ama olmadı...

alt text

 ArrayList<String> lines = new ArrayList<String>();  
 for(int i = 0 ; i < lines.size(); i++)
    { 
         if(Integer.parseInt(lines.get(i).substring(0,3)) > Integer.parseInt(lines.get(i+1).substring(0,3)))
         {
              dogumlar.add(lines.get(i));
              for(int j = i+1; j < lines.size();j++)
              {
                   if(Integer.parseInt(lines.get(j).substring(0,3)) > Integer.parseInt(lines.get(j+1).substring(0,3)))
                   {
                    olumler.add(lines.get(j));
                    for(int z = j+1 ; z < lines.size() ; z++)
                    {
                        olumler.add(lines.get(z));
                    }
                   }
                   else{
                    dogumlar.add(lines.get(j));
                   }
              }
         }         
         else{      
              olaylar.add(lines.get(i));
         }
    }

soruldu: 04 Eyl '14, 07:58

frknkntr's gravatar image

frknkntr
62681122
cevap kabul oranı: 26%

değiştirildi: 04 Eyl '14, 09:00

1

listeyi örnek bir veri ile gösterseniz daha iyi olur. Bir kural varsa, bunu net gösterecek bir örnek veri ile listeyi belirtirseniz, kodunuz da iyi anlaşılır.

(04 Eyl '14, 08:15) AliRıza Adıyahşi ♦ AliR%C4%B1za%20Ad%C4%B1yah%C5%9Fi's gravatar image

ekledim hocam

(04 Eyl '14, 08:24) frknkntr frknkntr's gravatar image

yani: {1997 - ku...}, {2008 - Em...} bir liste, {973 - Biru...}, {1768, Fra...} diger liste mi olacak. Böylece yukarıdaki veriden 2 tane liste elde etmiş olacaksınız öyle mi? Birde buradaki sayıların basamak sayısı düzensiz bu arada.

(04 Eyl '14, 08:31) AliRıza Adıyahşi ♦ AliR%C4%B1za%20Ad%C4%B1yah%C5%9Fi's gravatar image

hocam orda 2008 den sonra 973 geliyor ya 973 olan kısmı ve sonrasını diğer bir listeye atmak istiyorum... bu arada siz bana bir yol gösterirseniz ben basamak sayısı koşulunu hallederim... Ama başka diziye atma işlemini yapamadım...

(04 Eyl '14, 08:38) frknkntr frknkntr's gravatar image

tam liste

10 - asdasd
11 - asdasd
1  - asdasd
2  - asdasd
13 - asdasd

sıralanmış 1. liste

10 - asdasd
11 - asdasd
13 - asdasd

sıralanmış 2. liste

1  - asdasd
2  - asdasd

İstediğiniz böyle birşey mi?

(04 Eyl '14, 08:39) AliRıza Adıyahşi ♦ AliR%C4%B1za%20Ad%C4%B1yah%C5%9Fi's gravatar image

hocam çok benzer sadece

10- s 11- s

birinci liste

1-s 2-s 13- ikinci liste olacak

(04 Eyl '14, 08:41) frknkntr frknkntr's gravatar image

Normalde size java kodu yazamam, ama cevap verebilecek olanlar için sorunuzun anlışılması için sordum sorularımı. Siz mantığı mı oturtamadınız yoksa kodunuz mu çalışmıyor? Birde bu sırayı bozan 3. bir liste gelirse ne olacak? sırayı bozan liste sayısı da dinamik oluyor o zaman. Yani recursive bir yapı oluşmuyor mu?

(04 Eyl '14, 08:46) AliRıza Adıyahşi ♦ AliR%C4%B1za%20Ad%C4%B1yah%C5%9Fi's gravatar image

Anladım hocam sağolun...Benim kod çalışmıyor evet aklıma da başka yol gelmediği için konu açtım... Recursive yapıya ihtiyacım yok hocam sırayı bozan bir durum olması gibi birşey söz konusu değil şimdilik...Sizide uğreştırıyoruz sağolun...

(04 Eyl '14, 08:49) frknkntr frknkntr's gravatar image

kod da yapmak istediğimi de açıklayayım... Durumu bozan ifadeye ilk rastladığında rastladığı indisteki değeri yeni arrayList'e atıyorum sonra indis+1 ile tekrar durumu bozan bir ifade olmayana kadar yeni arrayList'e eklemeye devam ediyorum...Sonra tekrar bozan bir ifade geliyor ve aynı şartları onun için uyguluyorum ve kalan hepsini ona atıyorum...

(04 Eyl '14, 08:54) frknkntr frknkntr's gravatar image

sonraki elemana göre değil de önceki elemana göre yaparsanız işlemleri. Örneğin;

list listMain = // from data source
list list1 = new list();
list list2 = new list();

// ilk veriyi direk birinci listeye
// atabiliriz.
list1.add(listMain.firstElement);

// ana listeyi dönüyoruz
for(i=1; i<listMain.size; i++){
    // önceki elemandan büyükse, birinci
    // listeye atmaya devam et
    if (listMain.get(i)>listMain.get(i-1)){
        list1.Add(listMain.get(i));
    }else{
        // önceki elemandan kücükse
        // listenin geri kalanını 
        // ikinci listeye at ve döngüden cık
        while(i<listMain.size)
            list1.Add(listMain.get(i));
            i++;
        }
    }
}

ben olsam yukarıdaki gibi yapardım. (sözdizim birebir java değil)

(04 Eyl '14, 09:09) AliRıza Adıyahşi ♦ AliR%C4%B1za%20Ad%C4%B1yah%C5%9Fi's gravatar image

ana listeyi donerken 1 den başlıyoruz.

(04 Eyl '14, 09:09) AliRıza Adıyahşi ♦ AliR%C4%B1za%20Ad%C4%B1yah%C5%9Fi's gravatar image

hocam yaptığımız işlemler aynı...

(04 Eyl '14, 09:39) frknkntr frknkntr's gravatar image
12 yorumdan 5 tanesi gösteriliyor hepsini göster

Herkese teşekkür ederim Sorumu çözdüm....

edit: Arraylist parçalamak yerine veri çektiğim siteden kısım kısım çekerek sorumu çözdüm. Bu sayede ram'e gereksiz işlem yaptırmaktanda kurtuldum....

permanent link

cevaplandı: 04 Eyl '14, 09:45

frknkntr's gravatar image

frknkntr
62681122
cevap kabul oranı: 26%

değiştirildi: 04 Eyl '14, 10:05

2

Çözümü paylaşmalısınız yada nasıl çözüdüğünüze dair bilgi vermenizde fayda vardır ;)

(04 Eyl '14, 09:49) Turgay Can Turgay%20Can's gravatar image

Haklısınız kusura bakmayın şimdi editliyorum mesajı

(04 Eyl '14, 10:03) frknkntr frknkntr's gravatar image

birde şöyle bir yöntem var:

 ArrayList<String> lines1 = new ArrayList<String>();
                ArrayList<String> lines2 = new ArrayList<String>();

                String aranacak1 = "Do%C4%9umlarD%C3%BCzenle";
                String aranacak2 = "%c3%96mlerD%C3%BCzenle";
                Boolean b=false;

                for(int i=0; i< lines.size(); i++)
                {
                    b = lines.get(i).regionMatches(0, aranacak1, 0, aranacak1.length());
                    if(b == true){
                        lines1.add(lines.get(i+1));
                        lines.remove(i+1);
                    } 
                }

                for(int  i=0 ; i< lines1.size(); i++)
                {
                    b = lines1.get(i).regionMatches(0, aranacak2, 0, aranacak2.length());
                    if(b == true){
                        lines2.add(lines1.get(i+1));
                        lines1.remove(i+1);

                    }

                }
permanent link

cevaplandı: 04 Eyl '14, 19:19

frknkntr's gravatar image

frknkntr
62681122
cevap kabul oranı: 26%

Cevabınız
toggle preview

powered by BitNami OSQA