2013-07-17 3 views
1

мой текстсортировка по ArrayList, но ArrayList имеют одинаковое значение

---- SınİSırU, SınİUzO puanları azalan : 
------ {deneme deneme deneme}{ANYA}{LTD. ŞTİ.}{1.75}{1.25}{14.00}{10.00}{1.75}{1.2}{false} 
------ {deneme deneme deneme }{DZLİ}{ ŞTİ.}{1.43}{1.14}{11.43}{9.14}{1.43}{0.57}{false} 
------ {deneme deneme deneme }{MEİN}{ ŞTİ.}{1.29}{1.10}{10.29}{8.76}{1.29}{0.55}{false} 
------ {deneme deneme deneme }{HAY}{ ŞTİ.}{1.29}{1.10}{10.29}{8.76}{1.29}{0.55}{false} 
------ {deneme deneme deneme }{AHAN}{ ŞTİ.}{1.29}{1.10}{10.29}{8.76}{1.29}{0.55}{false} 
------ {deneme deneme deneme }{MSA}{ ŞTİ.}{1.29}{1.10}{10.29}{8.76}{1.29}{0.55}{false} 
------ {deneme deneme deneme }{Ş}{ ŞTİ.}{1.29}{1.10}{10.29}{8.76}{1.29}{0.55}{false} 
------ {deneme deneme deneme }{KO}{. ŞTİ.}{1.25}{1.08}{10.00}{8.67}{1.25}{0.54}{false} 

kolon1: 1.75,1.43,1.29 ...

kolon2: 1.25,1.14,1.10 ..

затем ı отсортировал их поменьше и больше.

заменено номер ı не хочу заменен номер. для exemaple, если мой содержать текст содержит 3,3,3,3,3,2,2,2,2,1,1,1,1,1,1

ı хотят только 1 2 3

public class PointStatue { 


    private static List<Double> col1 = new ArrayList<Double>(); 
    private static List<Double> col2 = new ArrayList<Double>(); 
    private static List<Double> col3 = new ArrayList<Double>(); 
    private static List<Double> col4 = new ArrayList<Double>(); 
    private static List<Double> col5 = new ArrayList<Double>(); 
    private static List<Double> col6 = new ArrayList<Double>(); 
    private static List<Double> list=new ArrayList<Double>(); 


    private static List<Double> numbers = new ArrayList<Double>(); 

    public static void main(String[] args) throws IOException { 

     ArrayList<String> puan; 
     puan = okuDiziyeKoy("C:\\deneme\\HW.txt"); 
     System.out.format("%d kayıt okundu.%n", puan.size()); 

     for (int j = 0; j < puan.size(); j++) { 

      String point = puan.get(j); 

      String[] edit = point.split("[\\{\\}\\)]"); 

      for (String s : edit) { 

       String a = s.replaceAll("[\\}\\-\\>\\>\\]\\[\\#\\*\\{]+", ""); 
       String b = a.replaceAll("[\\.]+", ","); 
       Scanner scanner = new Scanner(b); 

       while (scanner.hasNext()) { 

        if (scanner.hasNextDouble()) { 
         Double doubleValue = scanner.nextDouble(); 
         numbers.add(doubleValue); 
         // System.out.println(Arrays.deepToString(numbers.toArray())); 

        }// if scan end 

        else { 

         //if it is string comes value here 
         String stringValue = scanner.next(); 

        }// if scan end 

       }// while end 

      }// for string s 

     }// for j end 


     int col=1; 

     for(int i=0;i<numbers.size();i++) 
     { 

      Double rowValue = numbers.get(i); 

      switch(col) 
      { 
      case 1: 
       col1.add(rowValue); 
       Collections.sort(col1); 
       col++; 
       break; 
      case 2: 
       col2.add(rowValue); 
       Collections.sort(col2); 
       col++; 
       break; 
      case 3: 
       col3.add(rowValue); 
       Collections.sort(col3); 
       col++; 
       break; 
      case 4: 
       col4.add(rowValue); 
       Collections.sort(col4); 
       col++; 
       break; 
      case 5: 
       col5.add(rowValue); 
       Collections.sort(col5); 
       col++; 
       break; 
      case 6: 
       col6.add(rowValue); 
       Collections.sort(col6); 
       col = 1; 
       break; 

      }//switch end 

     }//for i end 


     System.out.println("kolon1"+col1); 
     System.out.println("kolon2"+col2); 
     System.out.println("kolon3"+col3); 
     System.out.println("kolon4"+col4); 
     System.out.println("kolon5"+col5); 
     System.out.println("kolon6"+col6); 

    }// main end 

    private static ArrayList<String> okuDiziyeKoy(String dosyaAdı) { 

     ArrayList<String> dizi = new ArrayList<String>(); 
     try { 
      FileInputStream fIS; 
      fIS = new FileInputStream(dosyaAdı); 
      Reader r = new InputStreamReader(fIS, "ISO-8859-9"); 
      BufferedReader bR = new BufferedReader(r); 
      String satır; 

      while ((satır = bR.readLine()) != null) { 
       dizi.add(satır); 

      } 
     } catch (FileNotFoundException e) { 
      e.printStackTrace(); 
     } catch (UnsupportedEncodingException e) { 
      e.printStackTrace(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
     return dizi; 
    }// okuDiziyeKoyEnd 

}// class end 
+1

Вы не можете использовать набор вместо списка? например, посмотрите на HashSet – peshkira

+0

ı dont want change my arraylist value .. ı только хотите, чтобы блок был заменен номером – user2583040

ответ

2

попробовать это, он находит повторяющиеся значения во всех строках, и каждая строка тоже работает для меня :)

/* 
import java.util.ArrayList; 
import java.util.Collections; 
import java.util.List; 
public class DupRemove { 
public static void main(String...arg){ 
    double val[]={1,4.3,5,2,4,4,4,6.5,2,2,2,2,2,3.5,3.7,4,7,8,9}; 
    for(int i=0;i<val.length;i++){ 
    add(val[i]); 
    } 
    Collections.sort(list); 
    System.out.println(list); 
} 
static List<Double> list=new ArrayList<>(); 
public static void add(double d){ 
    if(!list.contains(d)){list.add(d);} 
} 
} 
*/ 

import java.io.BufferedReader; 
import java.io.File; 
import java.io.FileInputStream; 
import java.io.FileNotFoundException; 
import java.io.IOException; 
import java.io.InputStreamReader; 
import java.util.*; 
public class PointStatue { 
/*private static List<Double> col1 = new ArrayList<Double>(); 
private static List<Double> col2 = new ArrayList<Double>(); 
private static List<Double> col3 = new ArrayList<Double>(); 
private static List<Double> col4 = new ArrayList<Double>(); 
private static List<Double> col5 = new ArrayList<Double>(); 
private static List<Double> col6 = new ArrayList<Double>(); 
private static List<Double> col7 = new ArrayList<Double>(); 
private static List<Double> col8 = new ArrayList<Double>();*/ 
//private static List<Double> list=new ArrayList<Double>(); 
private static ArrayList<List<Double>> rows=new ArrayList<List<Double>>(); 

private static List<Double> numbers = new ArrayList<Double>(); 
private static void okuDiziyeKoy(String path,ArrayList<String> arr) throws Exception{ 
    BufferedReader br=new BufferedReader(new InputStreamReader(new FileInputStream(path))); 
    //skip the first line 
    br.readLine(); 
    String g; 
    while((g=br.readLine())!=null){ 
    arr.add(g); 
    } 
} 
public static void main(String[] args) throws Exception { 
    ArrayList<String> puan = new ArrayList<String>(); 
    okuDiziyeKoy("C:/deneme/HW.txt", puan); 
    // puan = okuDiziyeKoy("C:\\deneme\\HW.txt"); 
    System.out.format("%d kayıt okundu.%n", puan.size()); 
    Double doubleValue; 

    for (int j = 0; j < puan.size(); j++) { 
     List<Double> listToAdd=new ArrayList<Double>(); 
     rows.add(j, listToAdd); 
     String point = puan.get(j); 
     //split data(line) by }{ 
     String[] edit = point.split("[}][{]"); 
     for(int l=3;l<edit.length-1;l++){ 
      //parsing String as double 
      doubleValue=Double.parseDouble(edit[l]); 
      //check if double value is not exist then add it to list 
      if(!numbers.contains(doubleValue)){ 
      numbers.add(doubleValue); 
      } 
      if(!listToAdd.contains(doubleValue)){ 
      listToAdd.add(doubleValue); 
      } 
     } 
     /* for (String s : edit) { 

      String a = s.replaceAll("[\\}\\-\\>\\>\\]\\[\\#\\*\\{]+", ""); 
      String b = a.replaceAll("[\\.]+", ","); 
      Scanner scanner = new Scanner(b); 

      while (scanner.hasNext()) { 

       if (scanner.hasNextDouble()) { 

        doubleValue = scanner.nextDouble(); 
        if(!numbers.contains(doubleValue)){ 
        numbers.add(doubleValue); 
        } 
        // System.out.println(Arrays.deepToString(numbers.toArray())); 

       }// if scan end 

       else { 

        //if it is string comes value here 
        String stringValue = scanner.next(); 

       }// if scan end 

      }// while end 

     }// for string s 

    }// for j end*/ 

     } 
    Collections.sort(numbers); 
    System.out.println("Unique values(in all rows): "); 
    for(Double d :numbers){ 
     System.out.print(d+" "); 
     } 
    System.out.println(); 
    /*int col=1; 
    for(int i=0;i<numbers.size();i++) 
    { 

     Double rowValue = numbers.get(i); 

     switch(col) 
     { 
     case 1: 
      col1.add(rowValue); 

      col++; 
      break; 
     case 2: 
      col2.add(rowValue); 

      col++; 
      break; 
     case 3: 
      col3.add(rowValue); 

      col++; 
      break; 
     case 4: 
      col4.add(rowValue); 

      col++; 
      break; 
     case 5: 
      col5.add(rowValue); 

      col++; 
      break; 
     case 6: 
      col6.add(rowValue); 

      col = 1; 
      break; 

     }//switch end 

    }//for i end*/ 
    /* Collections.sort(col1); 
    Collections.sort(col2); 
    Collections.sort(col3); 
    Collections.sort(col4); 
    Collections.sort(col5); 
    Collections.sort(col6);*/ 
    /*System.out.println("kolon1 "+col1); 
    System.out.println("kolon2 "+col2); 
    System.out.println("kolon3 "+col3); 
    System.out.println("kolon4 "+col4); 
    System.out.println("kolon5 "+col5); 
    System.out.println("kolon6 "+col6);*/ 
    //sorting each row 
    for(int i=0;i<rows.size();i++){ 
     Collections.sort(rows.get(i)); 
    } 
    //showing each row(array) 
    for(int i=0;i<rows.size();i++){ 
     System.out.println("kolon"+i+": "+rows.get(i)); 
    } 

}// main end 
} 

dup in columns:

/* 
import java.util.ArrayList; 
import java.util.Collections; 
import java.util.List; 
public class DupRemove { 
public static void main(String...arg){ 
    double val[]={1,4.3,5,2,4,4,4,6.5,2,2,2,2,2,3.5,3.7,4,7,8,9}; 
    for(int i=0;i<val.length;i++){ 
    add(val[i]); 
    } 
    Collections.sort(list); 
    System.out.println(list); 
} 
static List<Double> list=new ArrayList<>(); 
public static void add(double d){ 
    if(!list.contains(d)){list.add(d);} 
} 
} 
*/ 

import java.io.BufferedReader; 
import java.io.File; 
import java.io.FileInputStream; 
import java.io.FileNotFoundException; 
import java.io.IOException; 
import java.io.InputStreamReader; 
import java.util.*; 
public class PointStatue { 
/*private static List<Double> col1 = new ArrayList<Double>(); 
private static List<Double> col2 = new ArrayList<Double>(); 
private static List<Double> col3 = new ArrayList<Double>(); 
private static List<Double> col4 = new ArrayList<Double>(); 
private static List<Double> col5 = new ArrayList<Double>(); 
private static List<Double> col6 = new ArrayList<Double>(); 
private static List<Double> col7 = new ArrayList<Double>(); 
private static List<Double> col8 = new ArrayList<Double>();*/ 
//private static List<Double> list=new ArrayList<Double>(); 
private static ArrayList<List<Double>> rows=new ArrayList<List<Double>>(); 

private static List<Double> numbers = new ArrayList<Double>(); 
private static void okuDiziyeKoy(String path,ArrayList<String> arr) throws Exception{ 
    BufferedReader br=new BufferedReader(new InputStreamReader(new FileInputStream(path))); 
    //skip the first line 
    br.readLine(); 
    String g; 
    while((g=br.readLine())!=null){ 
    arr.add(g); 
    } 
} 
public static void main(String[] args) throws Exception { 
    ArrayList<String> puan = new ArrayList<String>(); 
    okuDiziyeKoy("C:/deneme/HW.txt", puan); 
    // puan = okuDiziyeKoy("C:\\deneme\\HW.txt"); 
    System.out.format("%d kayıt okundu.%n", puan.size()); 
    Double doubleValue; 
    for (int j = 0; j < 6; j++) { 
     rows.add(new ArrayList<Double>()); 
    } 
    for (int j = 0; j < puan.size(); j++) { 
     String point = puan.get(j); 
     //split data(line) by }{ 
     String[] edit = point.split("[}][{]"); 
     for(int l=3;l<edit.length-1;l++){ 
      //parsing String as double 
      doubleValue=Double.parseDouble(edit[l]); 
      //check if double value is not exist then add it to list 
      if(!numbers.contains(doubleValue)){ 
      numbers.add(doubleValue); 
      } 
      if(!rows.get(l-3).contains(doubleValue)){ 
      rows.get(l-3).add(doubleValue); 
      } 
     } 
     /* for (String s : edit) { 

      String a = s.replaceAll("[\\}\\-\\>\\>\\]\\[\\#\\*\\{]+", ""); 
      String b = a.replaceAll("[\\.]+", ","); 
      Scanner scanner = new Scanner(b); 

      while (scanner.hasNext()) { 

       if (scanner.hasNextDouble()) { 

        doubleValue = scanner.nextDouble(); 
        if(!numbers.contains(doubleValue)){ 
        numbers.add(doubleValue); 
        } 
        // System.out.println(Arrays.deepToString(numbers.toArray())); 

       }// if scan end 

       else { 

        //if it is string comes value here 
        String stringValue = scanner.next(); 

       }// if scan end 

      }// while end 

     }// for string s 

    }// for j end*/ 

     } 
    Collections.sort(numbers); 
    System.out.println("Unique values(in all rows): "); 
    for(Double d :numbers){ 
     System.out.print(d+" "); 
     } 
    System.out.println(); 
    /*int col=1; 
    for(int i=0;i<numbers.size();i++) 
    { 

     Double rowValue = numbers.get(i); 

     switch(col) 
     { 
     case 1: 
      col1.add(rowValue); 

      col++; 
      break; 
     case 2: 
      col2.add(rowValue); 

      col++; 
      break; 
     case 3: 
      col3.add(rowValue); 

      col++; 
      break; 
     case 4: 
      col4.add(rowValue); 

      col++; 
      break; 
     case 5: 
      col5.add(rowValue); 

      col++; 
      break; 
     case 6: 
      col6.add(rowValue); 

      col = 1; 
      break; 

     }//switch end 

    }//for i end*/ 
    /* Collections.sort(col1); 
    Collections.sort(col2); 
    Collections.sort(col3); 
    Collections.sort(col4); 
    Collections.sort(col5); 
    Collections.sort(col6);*/ 
    /*System.out.println("kolon1 "+col1); 
    System.out.println("kolon2 "+col2); 
    System.out.println("kolon3 "+col3); 
    System.out.println("kolon4 "+col4); 
    System.out.println("kolon5 "+col5); 
    System.out.println("kolon6 "+col6);*/ 
    //sorting each row 
    for(int i=0;i<rows.size();i++){ 
     Collections.sort(rows.get(i)); 
    } 
    //showing each row(array) 
    for(int i=0;i<rows.size();i++){ 
     System.out.println("kolon"+(i+1)+": "+rows.get(i)); 
    } 

}// main end 
} 
+0

спасибо большое чувак =)) – user2583040

+0

мой приятель, так вы получили свой ответ? это работает хорошо? Надеюсь, нет проблем/проблем? Hallelujah :) –

+0

dude =) вы положили n kolons, но если вы посмотрите мой текст, то будет 6 чисел. Возьмите первые числа, например 1.75, 1.43.1.29 1.29. Я помещаю их в один массив, 2.числа в другой массив, ı имеют 6 массивов, потому что ı имеют 6 точек возле всех sencentence.Then ı сортировать их .. теперь вы берете n колонов. Но ı нужно взять 6 колоно, потому что ı занимает только 6 очков. ı попробовал использовать мой код, но не могу. так что sory dude :(ı не торопитесь .. очень спасибо .. – user2583040

4

Взгляните на TreeSet:

реализации NavigableSet, основанный на TreeMap. Элементы - , заказанные с использованием их естественного заказа, или с помощью компаратора, предоставленного при времени создания набора, в зависимости от того, какой конструктор используется.

Это должно гарантировать, что у вас есть только один элемент и список сортируется в соответствии с тем, что вам нужно.

+0

, но ı не должен менять мое действительное значение, потому что этот код будет 1500 двойным значением после этого – user2583040

+0

@ user2583040, он не меняет реального value - TreeSet одновременно сортирует и де-дублирует, что именно вы просили. Если вы хотите вернуть значения в ArrayList после этого, просто вызовите 'new ArrayList (treeSetInstance);' – David

+0

@ user2583040: Так же, как предлагалось @David, все, что вам нужно сделать, это перебрать ваш текущий список и поместить ваши значения в 'TreeSet'. Набор будет автоматически ** сортировать и удалять любые дубликаты, которые могут быть у вас в ваших данных. – npinti

4

просто приятель :)

package com.blogspot.arashmd.examples; 
import java.util.ArrayList; 
import java.util.Collections; 
import java.util.List; 
public class DupRemove { 
public static void main(String...arg){ 
    double val[]={1,4.3,5,2,4,4,4,6.5,2,2,2,2,2,3.5,3.7,4,7,8,9}; 
    for(int i=0;i<val.length;i++){ 
    add(val[i]); 
    } 
    Collections.sort(list); 
    System.out.println(list); 
} 
static List<Double> list=new ArrayList<>(); 
public static void add(double d){ 
    if(!list.contains(d)){list.add(d);} 
} 
} 

и с вашим кодом бизнеса

/* 
import java.util.ArrayList; 
import java.util.Collections; 
import java.util.List; 
public class DupRemove { 
public static void main(String...arg){ 
    double val[]={1,4.3,5,2,4,4,4,6.5,2,2,2,2,2,3.5,3.7,4,7,8,9}; 
    for(int i=0;i<val.length;i++){ 
    add(val[i]); 
    } 
    Collections.sort(list); 
    System.out.println(list); 
} 
static List<Double> list=new ArrayList<>(); 
public static void add(double d){ 
    if(!list.contains(d)){list.add(d);} 
} 
} 
*/ 

    import java.io.IOException; 
    import java.util.*; 
    public class PointStatue { 
    private static List<Double> col1 = new ArrayList<Double>(); 
    private static List<Double> col2 = new ArrayList<Double>(); 
    private static List<Double> col3 = new ArrayList<Double>(); 
    private static List<Double> col4 = new ArrayList<Double>(); 
    private static List<Double> col5 = new ArrayList<Double>(); 
    private static List<Double> col6 = new ArrayList<Double>(); 
    private static List<Double> list=new ArrayList<Double>(); 


    private static List<Double> numbers = new ArrayList<Double>(); 

    public static void main(String[] args) throws IOException { 

     ArrayList<String> puan; 
     puan = okuDiziyeKoy("C:\\deneme\\HW.txt"); 
     System.out.format("%d kayıt okundu.%n", puan.size()); 
     Double doubleValue; 
     for (int j = 0; j < puan.size(); j++) { 

      String point = puan.get(j); 

      String[] edit = point.split("[\\{\\}\\)]"); 

      for (String s : edit) { 

       String a = s.replaceAll("[\\}\\-\\>\\>\\]\\[\\#\\*\\{]+", ""); 
       String b = a.replaceAll("[\\.]+", ","); 
       Scanner scanner = new Scanner(b); 

       while (scanner.hasNext()) { 

        if (scanner.hasNextDouble()) { 

         doubleValue = scanner.nextDouble(); 
         if(!numbers.contains(doubleValue)){ 
         numbers.add(doubleValue); 
         } 
         // System.out.println(Arrays.deepToString(numbers.toArray())); 

        }// if scan end 

        else { 

         //if it is string comes value here 
         String stringValue = scanner.next(); 

        }// if scan end 

       }// while end 

      }// for string s 

     }// for j end 


     int col=1; 

     for(int i=0;i<numbers.size();i++) 
     { 

      Double rowValue = numbers.get(i); 

      switch(col) 
      { 
      case 1: 
       col1.add(rowValue); 

       col++; 
       break; 
      case 2: 
       col2.add(rowValue); 

       col++; 
       break; 
      case 3: 
       col3.add(rowValue); 

       col++; 
       break; 
      case 4: 
       col4.add(rowValue); 

       col++; 
       break; 
      case 5: 
       col5.add(rowValue); 

       col++; 
       break; 
      case 6: 
       col6.add(rowValue); 

       col = 1; 
       break; 

      }//switch end 

     }//for i end 
     Collections.sort(col1); 
     Collections.sort(col2); 
     Collections.sort(col3); 
     Collections.sort(col4); 
     Collections.sort(col5); 
     Collections.sort(col6); 
     System.out.println("kolon1"+col1); 
     System.out.println("kolon2"+col2); 
     System.out.println("kolon3"+col3); 
     System.out.println("kolon4"+col4); 
     System.out.println("kolon5"+col5); 
     System.out.println("kolon6"+col6); 

    }// main end 
Смежные вопросы