2014-10-29 111 views
0

我正在嘗試讀取test.txt並按順序按字母順序對其進行排序並將其打印到新文件sort.txt中。 Test.txt在每行exp中只有1個單詞。 :從txt文件讀取單詞並對它們進行排序

  • 鼠標
  • 名詞
  • 特警

廣東話數字出來我失去了什麼。

管理找出我有什麼缺失!它寫入文件,但它首先給我像10000空行然後開始輸出corectly。

現在到第二部分。

我的第二個問題及其與代碼無關的是:我必須按照長度和順序排序單詞。我當時首先想的是按照長短的順序排列它們。你認爲這會起作用嗎?有任何想法嗎?完成後,所有的單詞都需要在txt文件中。

package test; 

    import java.io.BufferedReader; 
    import java.io.FileReader; 
    import java.io.FileWriter; 
    import java.io.PrintWriter; 
    import java.util.ArrayList; 
    import java.util.Collections; 
    import java.util.List; 

    public class sort { 

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

    String inputFile = "test.txt"; 
    String outputFile = "sort.txt"; 

    FileReader fileReader = new FileReader(inputFile); 
    BufferedReader bufferedReader = new BufferedReader(fileReader); 
    String inputLine; 
    List<String> lineList = new ArrayList<String>(); 
    while ((inputLine = bufferedReader.readLine()) != null) { 
     lineList.add(inputLine); 
    } 
    fileReader.close(); 

    Collections.sort(lineList); 

    FileWriter fileWriter = new FileWriter(outputFile); 
    PrintWriter out = new PrintWriter(fileWriter); 
    for (String outputLine : lineList) { 
     out.println(outputLine); 
    } 
    out.flush(); 
    out.close(); 
    fileWriter.close(); 

      } 
    } 
+0

什麼是你現在的輸出 – 2014-10-29 08:29:58

+0

你是說(在你的第一部分)你不明白你設置的問題?至於排序,這取決於問題的確切措辭,應該採取哪種先例。如果不清楚,請在您的代碼中說明您的假設並選擇訂購。這聽起來很像功課,所以你應該和你的老師談一談這個問題。 – Paolo 2014-10-29 08:30:14

+0

我收到空文件。 – 2014-10-29 08:34:15

回答

0

實現一個比較,並把它傳遞給Collections.sort(list,comparator)

在你的情況下使用Collections.sort(lineList, new MyComparator());
代替Collections.sort(lineList);

class MyComparator implements Comparator<String> { 
    public int compare(String s1, String s2) { 
     if (s1.length() > s2.length()) { 
      return 1; 
     } else if (s1.length() < s2.length()) { 
      return -1; 
     } else { 
      return s1.compareTo(s2); 
     } 
    } 
} 

比較函數強行對某些對象collection進行整體排序。可以將比較器傳遞給排序方法(如Collections.sort或Arrays.sort),以便精確控制排序順序。比較器也可以用來控制某些數據結構(例如排序集合或排序映射)的順序,或者爲沒有自然排序的對象集合提供排序。
瞭解更多信息從java docs

+0

也許你可以提供更多的信息。像什麼是一個comperator,你如何通過它;) – 2014-10-29 08:31:17

+1

http://examples.javacodegeeks.com/core-java/util/comparator/sort-arraylist-using-comparator-example/ – Bobz79 2014-10-29 08:36:48

+1

正是比較你的例子,需要; http://stackoverflow.com/questions/26616433/sort-words-by-length-and-then-by-alphabetical-order/26616611#26616611 – Martin 2014-10-29 08:45:08

1

在Linux中,您可以從命令實用程序中執行cat test.txt | sort > test1.txt。這很簡單。輸出將被存儲在test1.txt的

在java中也u可以使用排序方法對字符串數組如下:

讀取文件到一個字符串數組第一 ///

 Path filePath = new File("fileName").toPath(); 
     Charset charset = Charset.defaultCharset();   
     List<String> stringList = Files.readAllLines(filePath, charset); 
     String[] strNames = stringList.toArray(new String[]{}); 

然後使用在字符串數組strNames上的下面的方法,對數組進行排序的排序方法

  //String array 
      String[] strNames = new String[]{"John", "alex", "Chris", "williams", "Mark", "Bob"}; 

      /* 
      * To sort String array in java, use Arrays.sort method. 
      * Sort method is a static method.    * 
      */ 

      //sort String array using sort method 
      Arrays.sort(strNames); 

      System.out.println("String array sorted (case sensitive)"); 

      //print sorted elements 
      for(int i=0; i < strNames.length; i++){ 
        System.out.println(strNames[i]); 
      } 

      /* 
      * Please note that, by default Arrays.sort method sorts the Strings 
      * in case sensitive manner. 
      * 
      * To sort an array of Strings irrespective of case, use 
      * Arrays.sort(String[] strArray, String.CASE_INSENSITIVE_ORDER) method instead. 
      */ 
+0

我怎麼能在Windows中做到這一點? – 2014-10-29 08:58:46

+0

如果你使用python,可以很容易地完成 – 2014-10-29 09:24:22

+0

不,我正在使用java – 2014-10-29 09:27:44

0

管理使其工作。它首先按字母排序,然後按字母排序。感謝你的回覆。

package test; 

import java.io.BufferedReader; 
import java.io.FileReader; 
import java.io.FileWriter; 
import java.io.PrintWriter; 
import java.util.ArrayList; 
import java.util.Collections; 
import java.util.Comparator; 
import java.util.List; 

public class sort { 
public static class MyComparator implements Comparator<String>{ 
    @Override 
    public int compare(String o1, String o2) { 
     if (o1.length() > o2.length()) { 
     return 1; 
     } else if (o1.length() < o2.length()) { 
     return -1; 
     } 
     return o1.compareTo(o2); 
    } 
} 
public static void main(String[] args) throws Exception { 

    String inputFile = "test.txt"; 
    String outputFile = "sort.txt"; 

    FileReader fileReader = new FileReader(inputFile); 
    BufferedReader bufferedReader = new BufferedReader(fileReader); 
    String inputLine; 
    List<String> lineList = new ArrayList<String>(); 
    while ((inputLine = bufferedReader.readLine()) != null) { 
     lineList.add(inputLine); 
    } 
    fileReader.close(); 

    Collections.sort(lineList,String.CASE_INSENSITIVE_ORDER); 

    FileWriter fileWriter = new FileWriter(outputFile); 
    PrintWriter out = new PrintWriter(fileWriter); 
    for (String outputLine : lineList) { 
     out.println(outputLine); 
    } 

    Collections.sort(lineList, new MyComparator()); 

    FileWriter Fw = new FileWriter(outputFile); 
    PrintWriter pw = new PrintWriter(fileWriter); 
    for (String outputLine : lineList) { 
     out.println(outputLine); 
    }  
    out.flush(); 
    out.close(); 
    fileWriter.close(); 

} 
} 
相關問題