https://eng-entrance.com/java-hashmap
https://camp.trainocate.co.jp/magazine/java-split-method/
https://www.javadrive.jp/start/collection/index3.html
https://coogi-memo.hatenablog.com/entry/javasplit
https://www.javadrive.jp/start/string/index4.html
notepad a.java
import java.io.*;
import java.nio.file.*;
import java.util.*;
public class a {
public static void main(String args) throws Exception {
String targetFilePath = null;
byte data = null;
String outPut = null;
FileOutputStream fos = null;
BufferedOutputStream bos = null;
OutputStreamWriter osw = null;
// テストファイル作成
outPut = "H:\\tmp\\a.txt";
fos = new FileOutputStream(outPut);
bos = new BufferedOutputStream(fos);
osw = new OutputStreamWriter(bos, "MS932");
osw.write("PJ01,TABLE,T01\n");
osw.write("PJ01,INDEX,I01\n");
osw.write("PJ02,VIEW,V01\n");
osw.write("PJ03,TABLE,T02\n");
osw.write("PJ01,TABLE,T03\n");
osw.write("PJ01,TABLE,T04\n");
osw.write("PJ02,VIEW,V02\n");
osw.write("PJ01,TABLE,T06\n");
osw.write("PJ01,TABLE,T05\n");
osw.close();
bos.close();
fos.close();
// ファイル内容確認
FileReader fr = new FileReader(".\\a.txt");
BufferedReader reader = new BufferedReader(fr);
String line;
String[] elements;
String key;
Integer val;
HashMap<String, Integer> map = new HashMap<>();
Integer total;
total = 0;
while ( (line = reader.readLine() ) != null) {
elements = line.split(",");
key = elements[0] + "." + elements[1];
if ( map.containsKey(key) ) {
val = map.get(key);
map.put(key, val + 1);
} else {
map.put(key, 1);
}
total += 1;
}
reader.close();
fr.close();
System.out.println("プロジェクト/種別毎の集計");
Iterator<Map.Entry<String, Integer>> itr = map.entrySet().iterator();
while(itr.hasNext()) {
Map.Entry<String, Integer> entry = itr.next();
System.out.println(entry.getKey() + " : " + entry.getValue());
}
HashMap<String, Integer> map2 = new HashMap<>();
itr = map.entrySet().iterator();
while(itr.hasNext()) {
Map.Entry<String, Integer> entry = itr.next();
elements = entry.getKey().split("\\.");
key = elements[0];
if ( map2.containsKey(key) ) {
val = map2.get(key);
map2.put(key, val + entry.getValue() );
} else {
map2.put(key, entry.getValue() );
}
}
System.out.println("---");
System.out.println("プロジェクト毎の集計");
Iterator<Map.Entry<String, Integer>> itr2 = map2.entrySet().iterator();
while(itr2.hasNext()) {
Map.Entry<String, Integer> entry2 = itr2.next();
System.out.println(entry2.getKey() + " : " + entry2.getValue());
}
System.out.println("---");
System.out.println("TOTAL=" + Integer.toString(total) );
System.out.println("");
itr = map.entrySet().iterator();
itr2 = map2.entrySet().iterator();
String pjmei;
String syubetsu;
while(itr2.hasNext()) {
Map.Entry<String, Integer> entry2 = itr2.next();
System.out.println("# " + entry2.getKey() );
itr = map.entrySet().iterator();
while(itr.hasNext()) {
Map.Entry<String, Integer> entry = itr.next();
elements = entry.getKey().split("\\.");
pjmei = elements[0];
syubetsu = elements[1];
if ( pjmei.equals( entry2.getKey() ) ) {
System.out.println( syubetsu + " -> " + entry.getValue() );
}
}
}
}
}
javac -encoding utf-8 a.java
java a