2017-11-22 2 views
1

私は、ユーザーが入力したファイルとやりとりできるようにするプログラムを作成しています。オプションの1つはファイルを表示することです。以下では、最初に線で構成されるarraylistsを作成し、次に文字列で区切られた内側arraylistをスペースで区切ってarraylistにファイルを格納します。文字列のarraylistのarraylistを反復処理する方法は?

Scanner sc = new Scanner(fileName); 

    while (sc.hasNextLine()) { 
     String line = sc.nextLine(); 
     String[] words = {}; 
     words = line.split(" "); 
     ArrayList<String> lineArray = new ArrayList<String>(); 
     for (int i = 0; i < words.length; i++) { 
      lineArray.add(words[i]); 
     } 
     fileByLine.add(lineArray); 
    } 
    sc.close(); 

彼らはファイルに表示されるように私は、fileByLineと呼ばれる、配列リストの内容を印刷しようとしているが、私はどのようにわかりません。なにか提案を?配列リストにも

for(int i = 0; i < fileByLine.size(); i++){ 
    for(int j = 0; j < fileByLine.get(i).size(); j++){ 
     System.out.print(fileByLine.get(i).get(j)); 
    } 
    System.out.println(""); 
} 
+0

何が現在の出力は次のように見えますか? –

+0

@Ally 2番目のコードサンプルの見出しを読みやすくするために、そのフォーマットを更新してください。そしてサイトへようこそ! – oowekyala

答えて

5

あなたはアレイにあるブラケット表記を使用している、あなたは(getを使用する必要があります)...

 for (List list : fileByLine) { 
     for (Object line : list) { 
      System.out.print(line); 
     } 
     System.out.println(""); 
    } 
+0

ありがとうございました!これは私がやろうとしていたものですが、正しかったのですが...コードは完全に実行されます:) – Ally

0

またはこのような何かのために

case '1': 
for(int i = 0; i < fileByLine.size(); i++){ 
for(int j = 0; j < fileByLine.[i].size(); j++){ 
System.out.print(fileByLine[i][j]); 
    } System.out.println(""); 
} break; 
3

ので、あなたのコンテナはString typeで構成されています。

System.out.println(fileByLine); 

コレクションをループする必要はありません。たとえば、あなたが以下のリスト持っているとしましょう:

List<String> oneList = new ArrayList<>(Arrays.asList("1 2 3 4 5 6 7".split(" "))); 

を、あなたが別のリストにそれを追加したい:それはどのように見えるかここであなたはそれを印刷したい追加した後

List<List<String>> anotherList = new ArrayList<>(); 
anotherList.add(oneList); 

とは、次のとおりです。

System.out.println(anotherList); 

出力:[[1、2、3、4、5、6、7]

custom typeをコンテナに入れておき、override toString()メソッドまで動作しないと印刷しようとすると、String typeのために印刷されます。

次の2つのネストされたリストを反復処理する必要がある場合には、あまりにもこのアプローチを使用することができます。

Iterator<List<String>> outerIterator = anotherList.listIterator(); 

while (outerIterator.hasNext()) { 
    Iterator<String> innerIterator = outerIterator.next().listIterator(); 

    while (innerIterator.hasNext()) { 
     String item = innerIterator.next(); 
     System.out.print(item + " "); 
    } 

    System.out.println(); 
} 
関連する問題