前提・実現したいこと
<前提>
コンソールから Text1.txt Text2.txt Text3.txtとして
プログラムを起動すると、まずtext3.txtが出力され、次にtext2.txtが出力されるようにしたい。
メソッド作成
以下を使用できたらなおよい。
List<String> allLines = Files.readAllLines(Paths.get("fileName"));
allLines.forEach(System.out::Println);
<実現させたこと>
ファイルを逆順に出力
<わからないこと>
メソッドを作成して、
ラムダだが、メソッド参照を使用して逆順ファイルを出力
発生している問題・エラーメッセージ
for(String l : lists) {//ここでおこられる
System.out.println(get(l));
にすると以下のようにerrorが発生します。
エラーメッセージ
型の不一致: 要素タイプ List<String> から String には変換できません
該当のソースコード
Java
1import java.io.IOException; 2import java.nio.file.Files; 3import java.nio.file.Paths; 4import java.util.Collections; 5import java.util.LinkedList; 6import java.util.List; 7 8 9 10public class Demo8 { 11 12 13 public static void main(String[] args) { 14 try { 15 List<String> list = Files.readAllLines(Paths.get(args[0])); 16 List<String> list1 = Files.readAllLines(Paths.get(args[1])); 17 List<String> list2 =Files.readAllLines(Paths.get(args[2])); 18 19 LinkedList<List <String>> lists = new LinkedList<List <String>>(); 20 lists.add(list); 21 lists.add(list1); 22 lists.add(list2); 23 Collections.reverse(lists);//要素を逆順にする 24 25 for (String l : lists) { 26 System.out.println(get(l); 27 //for (String l : lists.get(0)) { 28 System.out.println(l); 29 } 30 31 32 } catch (IOException e) { 33 34 e.printStackTrace(); 35 } 36 37 } 38}
試したこと
まず、逆順にソートさせてText3のファイルの中身が全行読み込まれて出力出来るかどうか。
Java
1 2public static void main(String[] args) { 3 try { 4 List<String> list = Files.readAllLines(Paths.get(args[0])); 5 List<String> list1 = Files.readAllLines(Paths.get(args[1])); 6 List<String> list2 =Files.readAllLines(Paths.get(args[2])); 7 8 LinkedList<List <String>> lists = new LinkedList<List <String>>(); 9 lists.add(list); 10 lists.add(list1); 11 lists.add(list2); 12 Collections.reverse(lists);//要素を逆順にする 13 for (String l : lists.get(0)) { 14 System.out.println(l); 15 }
以下のサイトを参照して学習してみた
ラムダだが、メソッド参照
Class Files
Rreverse method
###追記
降順で出力できたけど、結果が"[]"になった状態で出力されてしまった。
どうしたら解決しますでしょうか?
Java
1 2 LinkedList<List <String>> lists = new LinkedList<List <String>>(); 3 lists.add(list); 4 lists.add(list1); 5 lists.add(list2); 6 Collections.reverse(lists);//要素を逆順にする 7 for (int i = lists.size() - 1; i >= 0; i--) { 8 System.out.println(lists.get(i)); 9 } 10 } catch (IOException e) { 11 12 e.printStackTrace(); 13 } 14 15 } 16} 17
補足情報(FW/ツールのバージョンなど)
Java version 8.0
使用しているeditor:Eclipse
回答1件
あなたの回答
tips
プレビュー