2016-04-12 20 views
0

Bir metin dosyasının her satırını bölmeye ve bir dizi listesine eklemeye çalışıyorum.Birincil 212 Array öğesini birincil anahtarla sıralayın

aa 04 cc ff gg rrr 
aa 01 bb dd ee fff 
aa 03 ff hh ee ttt 
aa 05 dd ss ww ccc 

1, Sayılar tamsayı olarak listelenir ve kalanlar dizi listesinde dizelerdir. (Geçerli kod ile Sayı Formatı Hatası atma).

2, Java koleksiyonları ile diziye eklerken tamsayıya göre sıralama yapmak mümkün mü? Şimdiye kadar var

,

List <Object> records = new ArrayList<Object>(); 
     bf = new BufferedReader(new FileReader(getFile())); 
     String readLine;   

     while ((readLine = bf.readLine()) != null) { 
      try { 
        List <Object> record = new ArrayList<Object>(); 

        record.add(readLine.substring(flg_start, num_start).trim()); 
        record.add(Integer.parseInt(readLine.substring(num_start-1, fld_start-1).trim())); // converting string to int and saving to record list, throwing Number Format Error. 

beni tekrar sorularımı ifadeleri, nasıl [1] tamsayı olarak rekoru ve dize olarak dinlensin? Diziye eklerken sıralama yapmak için hangi toplama çerçevesini kullanabilirim? Ben ... 1 Böyle yapabilirsiniz ve strArray size kullanım regex [0 döngü için kullanabilir veya olabilir erişmek için etrafında 1M kayıtları

aa 01 bb dd ee fff 
aa 03 ff hh ee ttt 
aa 04 cc ff gg rrr 
aa 05 dd ss ww ccc 
+0

Bazı gereksinimler ve bazı kodlar gönderdiniz, ancak asıl sorunun veya sorunun ne olduğunu bize söylemediniz. – tnw

+0

Bir dizin oluşturma sorunundan şüpheleniyorum. Alt dize sonuçlarını ayrı değişkenlerde depolamayı ve bunları denetlemeyi deneyin (günlüğe kaydetme veya bir hata ayıklayıcı ile). –

+0

@tnw, Soruları yine kodumun altında güncelledim – SamK

cevap

1

görünüyor. Dosyayı okumalı ve her satırı ayrıştırılmış @HaridwarJha olarak ve her satır için ayrıştırılan değerlerden oluşan Integer anahtar ve List değeri ile yeni değer koymalısınız. TreeMap ile verileriniz, sizden dosya ile Integer arasındaki değerlere göre sıralanır.

Map<Integer, List<Object>> map = new TreeMap<Integer, List<Object>>(); 
while((line=reader.readLine())!=null){ 
    List<Object> row = new ArrayList<>(); 
    String[] strArray=line.split(" "); 
    row.add(strArray[0]); 
    row.add(strArray[1]); 
    row.add(strArray[2]); 
    row.add(strArray[3]); 
    row.add(strArray[4]); 
    row.add(strArray[5]); 
    map.put(new Integer(row.get(1)), row); 
} 
+0

Otomatik sıralama elde etmek için Treemap hakkında düşünüyordum. Diziye eklemek için, performans açısından iyi bir fikir mi ?, bu dosya 1 milyon satır içerdiğinden. – SamK

+0

Veya daha iyisi Treemap'ı bir değişkenler sınıfı ile tanımlarım? – SamK

+0

Sıralamak için 2D TreeMap ile herhangi bir sözde kod? – SamK

0

sıralı bir liste olarak benim dizide sonuçta bekliyorum ] ayrıştırma için .... İşte basit bir ... deneyin genel statik geçersiz ana (String [] args) { Liste kayıtları = new ArrayList(); Eğer Integer anahtarlar ve List değerlerle TreeMap gerekiyor gibi veri yapısı gelince

File file=new File("File Location"); 
    try { 
     BufferedReader reader=new BufferedReader(new FileReader(file)); 
     String line; 
     while((line=reader.readLine())!=null){ 
      String[] strArray=line.split(" "); 
      records.add(new Integer(strArray[1])); 
      records.add(new String(strArray[0])); 
      records.add(new String(strArray[2])); 
      records.add(new String(strArray[3])); 
      records.add(new String(strArray[4])); 
      records.add(new String(strArray[5])); 
     } 
    } catch (FileNotFoundException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } catch (IOException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
    for(Object tmp:records){ 
     System.out.println(tmp); 
    } 
} 
İlgili konular