質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Q&A

解決済

2回答

893閲覧

読み込みが遅いのかデータの書き方が問題なのかわかりません

Seeker

総合スコア33

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

0グッド

0クリップ

投稿2022/07/10 02:57

使用環境
window 10Home
eclipse: 2022-03 

現在二つのクラスを用意して
一つはデータ関連のクラス
もう一つはデータを読み込むメインクラス
となっています。

データを読み込んだのですが・・・
エラーが出てないのにどういうわけか、全然何も表示されません。
プログラムの書き方に問題があるのでしょうか
データの使い方に問題があるのでしょうか、
それともデータ量が多すぎて読み込みが遅れているからなんでしょうか
あるいはそれ以外の何かでしょうか?
どうすればいいのでしょうか

・データを読み込むもの

DailyDate.java

1 2package date; 3import java.text.SimpleDateFormat; 4import java.time.LocalDate; 5import java.time.format.DateTimeFormatter; 6import java.util.ArrayList; 7import java.util.List; 8 9public class DailyDate extends CSVSet{ 10 11 private static String File="DailyData.csv"; 12 private static LocalDate OneDay; 13 private static int PrefatureNumber; 14 private static String Prefature; 15 private static int TodayInfect; 16 private static int SumInfect; 17 private static int TodayDeath; 18 private static int SumDeateh; 19 private static double WeekHundredThousandInfect; 20 21 public DailyDate(LocalDate oneDay, int prefatureNumber, String prefature, int todayInfect, int sumInfect, 22 int todayDeath, int sumDeateh, double weekHundredThousandInfect) { 23 24 OneDay = oneDay; 25 PrefatureNumber = prefatureNumber; 26 Prefature=prefature; 27 TodayInfect = todayInfect; 28 SumInfect = sumInfect; 29 TodayDeath = todayDeath; 30 SumDeateh = sumDeateh; 31 WeekHundredThousandInfect = weekHundredThousandInfect; 32 } 33 34 private static ArrayList<ArrayList<String>> DailyDateSet (String File){ 35 36 ArrayList<ArrayList<String>> DailyDateSet = new ArrayList<ArrayList <String>>(); 37 DailyDateSet=CSVSet.Date(File); 38 return DailyDateSet; 39 } 40 41 public static List<DailyDate> GetDailyDate(){ 42 43 ArrayList<ArrayList<String>> PrefatureSet =DailyDateSet(File); 44 List<DailyDate> GetDailyDate=new ArrayList<>(); 45 46 for(int RowCount=1;RowCount<PrefatureSet.size();RowCount++) { 47 48 GetDailyDate.add(new DailyDate(CallOneDay(RowCount),CallPrefatureNumber(RowCount),CallPrefature(RowCount),CallTodayInfect(RowCount),CallSumInfect(RowCount),CallTodayDeath(RowCount),CallSumDeateh(RowCount),CallWeekHundredThousandInfect(RowCount))); 49 50 } 51 52 return GetDailyDate; 53 54 } 55 56 private static LocalDate CallOneDay(int Index) { 57 58 ArrayList<ArrayList<String>> DailyDateSet =DailyDateSet(File); 59 DateTimeFormatter fmt=DateTimeFormatter.ofPattern("yyyy/MM/dd"); 60 String Item=DailyDateSet.get(Index).get(0); 61 LocalDate OneDay=LocalDate.parse(Item,fmt); 62 return OneDay; 63 } 64 65 private static int CallPrefatureNumber(int Index) { 66 67 ArrayList<ArrayList<String>> DailyDateSet =DailyDateSet(File); 68 int PrefatureNumber=Integer.parseInt(DailyDateSet.get(Index).get(1)); 69 return PrefatureNumber; 70 } 71 72 private static String CallPrefature(int Index) { 73 74 ArrayList<ArrayList<String>> DailyDateSet =DailyDateSet(File); 75 String Prefature=DailyDateSet.get(Index).get(2); 76 return Prefature; 77 } 78 79 private static int CallTodayInfect(int Index) { 80 81 ArrayList<ArrayList<String>> DailyDateSet =DailyDateSet(File); 82 int TodayInfect=Integer.parseInt(DailyDateSet.get(Index).get(3)); 83 return TodayInfect; 84 } 85 86 private static int CallSumInfect(int Index) { 87 88 ArrayList<ArrayList<String>> DailyDateSet =DailyDateSet(File); 89 int SumInfect=Integer.parseInt(DailyDateSet.get(Index).get(4)); 90 return SumInfect; 91 } 92 93 private static int CallTodayDeath(int Index) { 94 95 ArrayList<ArrayList<String>> DailyDateSet =DailyDateSet(File); 96 int TodayDeath=Integer.parseInt(DailyDateSet.get(Index).get(5)); 97 return TodayDeath; 98 } 99 100 private static int CallSumDeateh(int Index) { 101 102 ArrayList<ArrayList<String>> DailyDateSet =DailyDateSet(File); 103 int SumDeateh=Integer.parseInt(DailyDateSet.get(Index).get(6)); 104 return SumDeateh; 105 } 106 107 private static double CallWeekHundredThousandInfect(int Index) { 108 109 ArrayList<ArrayList<String>> DailyDateSet =DailyDateSet(File); 110 double WeekHundredThousandInfect=Double.parseDouble(DailyDateSet.get(Index).get(7)); 111 return WeekHundredThousandInfect; 112 } 113 114 public LocalDate getOneDay() { 115 return OneDay; 116 } 117 118 public int getPrefatureNumber() { 119 return PrefatureNumber; 120 } 121 122 public String getPrefature() { 123 return Prefature; 124 } 125 126 public int getTodayInfect() { 127 return TodayInfect; 128 } 129 130 public int getSumInfect() { 131 return SumInfect; 132 } 133 134 public int getTodayDeath() { 135 return TodayDeath; 136 } 137 138 public int getSumDeateh() { 139 return SumDeateh; 140 } 141 142 public double getWeekHundredThousandInfect() { 143 return WeekHundredThousandInfect; 144 } 145 146 public static void setOneDay(LocalDate oneDay) { 147 OneDay = oneDay; 148 } 149 150 public void setPrefatureNumber(int prefatureNumber) { 151 PrefatureNumber = prefatureNumber; 152 } 153 154 public void setPrefature(String prefature) { 155 Prefature = prefature; 156 } 157 158 public void setTodayInfect(int todayInfect) { 159 TodayInfect = todayInfect; 160 } 161 162 public void setSumInfect(int sumInfect) { 163 SumInfect = sumInfect; 164 } 165 166 public void setTodayDeath(int todayDeath) { 167 TodayDeath = todayDeath; 168 } 169 170 public void setSumDeateh(int sumDeateh) { 171 SumDeateh = sumDeateh; 172 } 173 174 public void setWeekHundredThousandInfect(double weekHundredThousandInfect) { 175 WeekHundredThousandInfect = weekHundredThousandInfect; 176 } 177 178 @Override 179 public String toString() { 180 return "DailyDate [PrefatureNumber=" + PrefatureNumber + ", Prefature=" + Prefature + ", TodayInfect=" 181 + TodayInfect + ", SumInfect=" + SumInfect + ", TodayDeath=" + TodayDeath + ", SumDeateh=" + SumDeateh 182 + ", WeekHundredThousandInfect=" + WeekHundredThousandInfect + "]"; 183 } 184 185 186 187} 188 189

・データを読み込む元の継承前のもの

CSVSet.java

1 2package date; 3import java.io.BufferedReader; 4import java.io.File; 5import java.io.FileInputStream; 6import java.io.FileNotFoundException; 7import java.io.IOException; 8import java.io.InputStreamReader; 9import java.nio.charset.Charset; 10import java.util.ArrayList; 11import java.util.Arrays; 12import java.util.HashSet; 13import java.util.List; 14import java.util.Set; 15 16public class CSVSet { 17 18 protected static ArrayList<ArrayList<String>> Date (String file_name){ /////指定したファイルを文字リストのリスト型として読み込む 19 20 ArrayList<String[]> Origindate =new ArrayList<String[]>(); 21 ArrayList<ArrayList<String>> Date = new ArrayList<ArrayList <String>>(); 22 BufferedReader br=null; 23 24 try { 25 File file=new File(file_name); 26 br=new BufferedReader(new InputStreamReader(new FileInputStream(file),Charset.forName("MS932"))); 27 28 29 String line; 30 31 try { 32 while((line=br.readLine()) != null) { 33 34 Origindate.add(line.split(",")); 35 36 } 37 } catch (IOException e) { 38 // TODO 自動生成された catch ブロック 39 e.printStackTrace(); 40 } 41 42 43 for(int RowCount=0;RowCount<Origindate.size();RowCount++) { 44 45 String[] cher=Origindate.get(RowCount); 46 List<String> PreList=Arrays.asList(cher); 47 ArrayList<String> NewList=new ArrayList<String>(PreList); 48 Date.add(NewList); 49 } 50 51 52 } catch (FileNotFoundException e) { 53 System.out.println("ファイルが見つかりません"); 54 e.printStackTrace(); 55 } 56 57 58 59 return Date; 60 61 } 62 63 protected static int RefaranceColumnNumber (String TargetWard,ArrayList<ArrayList<String>> Date) {/////指定したワードをもとに参照先の数字を読み込む 64 65 int RefaranceColumnNumber=0; 66 67 while(Date.get(0).get(RefaranceColumnNumber).equals(TargetWard) || RefaranceColumnNumber==((CharSequence) Date.get(0)).length()) { 68 69 RefaranceColumnNumber++; 70 } 71 72 if(RefaranceColumnNumber==((CharSequence) Date.get(0)).length()){ 73 74 System.out.println("該当のコラム名はありません"); 75 System.exit(0); 76 77 } 78 79 return RefaranceColumnNumber; 80 81 } 82 83 protected static ArrayList<String>SelectColumn(int RefaranceColumnNumber,ArrayList<ArrayList<String>> Origin){//////参照先の数字からコムボックスに渡す値をセットする 84 85 ArrayList<String> PreSelectColumn=new ArrayList<String>(); 86 87 for(int i=0;i<Origin.size();i++) { 88 89 PreSelectColumn.add(Origin.get(i).get(RefaranceColumnNumber)); 90 91 } 92 93 Set<String> SetPreSelectColumn=new HashSet<String>(PreSelectColumn); 94 ArrayList<String> SelectColumnSet=new ArrayList<String>(SetPreSelectColumn); 95 return SelectColumnSet; 96 } 97 98 99 100 101 protected static ArrayList<String> FastColumn(ArrayList<ArrayList<String>> Origin){////一列目に記載されているコラム名からカムボックスに入れる要素をすべて取り出す 102 103 104 ArrayList<String> FastColumn=new ArrayList<String>(); 105 106 for(int i=0;i<Origin.get(0).size();i++) { 107 108 FastColumn.add(Origin.get(0).get(i)); 109 110 } 111 112 return FastColumn; 113 114 } 115 116} 117

Mainのもの

Main.java

1package excit; 2 3import java.util.List; 4import java.util.stream.Collectors; 5 6import date.DailyDate; 7 8public class Main { 9 10 public static void main(String[] args) { 11 List<DailyDate> Daily=date.DailyDate.GetDailyDate(); 12 System.out.println(Daily.get(0).getPrefature()); 13 List<DailyDate> DailySetList=Daily.stream() 14 .filter(SetPrefature ->"北海道".equals(SetPrefature.getPrefature())) 15 .collect(Collectors.toList()); 16 17 DailySetList.forEach(name->System.out.print(name)); 18 } 19} 20

CSVファイル

DailyDat

1日付 都道府県コード 都道府県名 各地の感染者数_1日ごとの発表数 各地の感染者数_累計 各地の死者数_1日ごとの発表数 各地の死者数_累計 各地の直近1週間の人口10万人あたりの感染者数 22020/01/16 1 北海道 0 0 0 0 0 32020/01/17 1 北海道 0 0 0 0 0 42020/01/18 1 北海道 0 0 0 0 0 52020/01/19 1 北海道 0 0 0 0 0 62020/01/20 1 北海道 0 0 0 0 0 72020/01/21 1 北海道 0 0 0 0 0 82020/01/22 1 北海道 0 0 0 0 0 92020/01/23 1 北海道 0 0 0 0 0 102020/01/24 1 北海道 0 0 0 0 0 112020/01/25 1 北海道 0 0 0 0 0 122020/01/26 1 北海道 0 0 0 0 0 132020/01/27 1 北海道 0 0 0 0 0 142020/01/28 1 北海道 1 1 0 0 0.02 152020/01/29 1 北海道 0 1 0 0 0.02 16(以下略)

因みにこのデータの行数は4万1032行あります

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

どうすればいいのでしょうか

デバッグしてください。
作りました→動かしました→変です→何故でしょう、では、まるでプログラミングになっていません。想定通りに動いているかを確認し、そうでなければ原因を推理・確認し、それを修正してまた動かして確認する…の繰り返しが必要です。
料理を作るにも、煮えているか焼けているか、味加減はどうか等確認しながら進めるはずです。何も確認せず出来上がってから変な料理になっていたとして原因を探すのは難しいです。(料理ならまだ目で見て分かるとかあるかもしれませんが。)

どう動いているのかがまるで想像できないのでしたら、医者が治療前に診察するように、一行毎にでも連番の表示や変数の表示を入れる等して、プログラムの動きを観察して見てください。その際は「正常ならこう表示されるはず」というのを考えておくことが重要です。
またデータ件数を10件程度に減らしたほうが、件数が原因なのかを切り分け、かつ、動作を見る際に大量の表示を見る必要が無くなるので有効です。

投稿2022/07/10 03:42

jimbe

総合スコア12648

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

取りあえず結果表示が終わったところで処理完了などと表示するようにするとか処理途中で適宜〇〇完了などと表示するようにしてみてはどうでしょうか。
本格的にどこが遅いかを調べる場合はエクリプスやIntelliJ IDEAなどのIDEを使うことになるかと思いますがまあそこまで行くと別の質問ですかね。

投稿2022/07/10 03:23

usekay

総合スコア395

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

usekay

2022/07/10 03:45 編集

すいませんそもそも件数を10件とかにしたファイルでは処理が完了しましたか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問