ファイルから入力を取得し、ファイル内の各単語をトークンとして保存し、各トークンを配列リストに追加するプログラムがあります。
問題は、arrayList が ["cat","dog"," "," ","bird"] のように表示され、arrayList にスペースが必要ないことです。
そして、読み込まれるファイルは次のように設定されます。
cat dog
bird
空白行がスペースの原因であることは明らかですが、空白行は必要です。
とにかく、私のコードは以下の通りです:
import java.io.BufferedReader;
import java.io.DataInputStream;
import java.io.FileInputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.Iterator;
import java.util.List;
public class NewMain{
public static void main(String[] args){
try{
FileInputStream fstream = new FileInputStream("Filename");
//Get the object of datainputstream
DataInputStream in = new DataInputStream(fstream);
BufferedReader br = new BufferedReader(new InputStreamReader(in));
String strLine;
List<String> listOfWords = new ArrayList<String>();
while((strLine = br.readLine()) != null){
String [] tokens = strLine.split("\\s+");
String [] words = tokens;
for(String word : words){
listOfWords.add(word);
System.out.print(word);
System.out.print(" ");
}
System.out.print("\n");
}
System.out.println(listOfWords);
List<String> space = new ArrayList<String>();
String[] spaces = {" "};
space.addAll(Arrays.asList(spaces));
editList(listOfWords,space);
System.out.println(listOfWords);
in.close();
}
catch(Exception e){
System.err.println("Error: " + e.getMessage());
}
}
public static void editList(Collection<String> list1, Collection<String> list2){
Iterator<String> it = list1.iterator();
while(it.hasNext()){
if(list2.contains(it.next())) {
it.remove();
}
}
}
}
ファイル以外のString[] spaces = {" "};
arrayListからスペースを削除してテストしたため、空白を削除する必要があります。そして奇妙なことに、これを変更するとString[] spaces = {"cat"};
、arrayList から cat が削除されます。