/*
* 練習問題21.1 p.514
* ファイルを開いて1行ずつ読み込み、各行をString.compareToを使用してソートされたListに
* 保存するプログラムを書きなさい。
* 練習問題20.4で作成した行を読み込むクラスが役立ちます。
*/
package ch21.ex21_01;
import java.io.FileReader;
import java.io.LineNumberReader;
import java.util.ArrayList;
public class StringCompareList
{
ArrayList<String> list = new ArrayList<String>();
public void createStringList()
{
FileReader fileIn = null;
try
{
fileIn = new FileReader("JPL/ch21/ex21_01/test.txt");
}
catch(Exception e)
{
System.out.println(e);
}
LineNumberReader in = new LineNumberReader(fileIn);
int ch;
StringBuffer line = new StringBuffer("");
try
{
while ((ch = in.read()) != -1)
{
if (ch != '\n')
{
line.append(String.valueOf((char)ch));
}
else
{
addComparedStringToList(line.toString());
line.delete(0, line.length());
}
}
if (line.length() != 0)
{
addComparedStringToList(line.toString());
}
}
catch(Exception e)
{
System.out.println(e);
}
}
public void addComparedStringToList(String targetString)
{
for(int i = 0; i < list.size(); i++)
{
if (targetString.compareTo((String)list.get(i)) < 0)
{
list.add(i, targetString);
return;
}
}
list.add(targetString);
}
public void showList()
{
for(int i = 0; i < list.size(); i++)
{
System.out.println(list.get(i));
}
}
public static void main(String[] args)
{
StringCompareList test = new StringCompareList();
test.createStringList();
test.showList();
}
}