ファイルからの読み取り、ArrayList、StreamAPIの使用練習

This commit is contained in:
s-sakiyama
2026-09-17 16:20:52 +09:00
parent 1bbc548980
commit b254050ce8
3 changed files with 176 additions and 0 deletions

165
em-oop/src/Sub.java Normal file
View File

@@ -0,0 +1,165 @@
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Scanner;
public class Sub {
public static void main(String[] args) {
final String employeesCSVPath = "employees.csv";
final String departmentsCSVPath = "departments.csv";
ArrayList<BaseData> employees = new ArrayList<BaseData>();
ArrayList<BaseData> departments = new ArrayList<BaseData>();
//社員CSVの読み込み
Path pathEmp = Path.of(employeesCSVPath);
ArrayList<String> content = new ArrayList<String>();
try {
// content = Files.readString(path);
content = (ArrayList<String>) (Files.readAllLines(pathEmp));
} catch (IOException e) {
// TODO 自動 生成された catch ブロック
e.printStackTrace();
}
content.stream().forEach(data -> {
ArrayList<String> content2 = new ArrayList<String>(Arrays.asList(data.split(",")));
employees.add(
new EmployeeData(content2.get(0), content2.get(1), content2.get(2), content2.get(3),
content2.get(4), content2.get(5)));
});
//部門CSVの読み込み
content.clear();//使いまわしたいから
Path pathDept = Path.of(departmentsCSVPath);
try {
// content = Files.readString(path);
content = (ArrayList<String>) (Files.readAllLines(pathDept));
} catch (IOException e) {
// TODO 自動 生成された catch ブロック
e.printStackTrace();
}
content.stream().forEach(data -> {
ArrayList<String> content2 = new ArrayList<String>(Arrays.asList(data.split(",")));
employees.add(
new DepartmentData(content2.get(0), content2.get(1)));
});
ArrayList<BaseData> allData = new ArrayList<BaseData>();
allData.addAll(employees);
allData.addAll(departments);
//intを配列にしたらエラーが出なかった 理由不明
int employeeCount = 0;
int deptCount = 0;
int[] counter = { 0, 0 };
allData.stream().forEach(data -> {
System.out.println(data); //一覧表示
if (data instanceof EmployeeData) {
counter[0]++;
} else if (data instanceof DepartmentData) {
counter[1]++;
}
});
System.out.println("社員データ:" + counter[0] + "件\n部署データ:" + counter[1] + "件");
System.out.println();
//検索
Scanner scanner = new Scanner(System.in);
while (true) {
System.out.println("検索したい項目を入力してください\n社員ID:1 部署名:2 終了:0");
System.out.print(">>>>");
String str = scanner.nextLine().strip();
switch (str) {
case "1":
EmployeeSeach(allData);
break;
case "2":
DepartmentSearch(allData);
break;
case "0":
System.out.println("システムを終了します");
return;
default:
break;
}
}
}
private static void DepartmentSearch(ArrayList<BaseData> allData) {
Scanner scanner = new Scanner(System.in);
while (true) {
System.out.println("検索したい部署名を入力してください(戻る場合は0)");
System.out.print(">>>>");
String str = scanner.nextLine().strip();
String searchDeptId = "";
switch (str) {
case "0":
System.out.println("検索一覧に戻ります\n");
return;
default:
for (BaseData data : allData) {
if (data instanceof DepartmentData) {
if (((DepartmentData) data).getNmDepartment().equals(str)) {
searchDeptId = ((DepartmentData) data).getIdDepartment();
}
}
}
if (searchDeptId.equals("")) {
System.out.println("該当する部署が見つかりませんでした\n");
continue;
}
for (BaseData data : allData) {
if (data instanceof EmployeeData) {
if (((EmployeeData) data).getIdDepartment().equals(searchDeptId)) {
System.out.println(
((EmployeeData) data).getNmEmployee() + "\t"
+ ((EmployeeData) data).getMailAddress());
}
}
}
System.out.println();
break;
}
}
}
private static void EmployeeSeach(ArrayList<BaseData> allData) {
Scanner scanner = new Scanner(System.in);
while (true) {
System.out.println("検索したい社員IDを入力してください(戻る場合は0)");
System.out.print(">>>>");
String str = scanner.nextLine().strip();
boolean matchFlag = false;
switch (str) {
case "0":
System.out.println("検索一覧に戻ります\n");
return;
default:
for (BaseData e : allData) {
if (e.getPrimaryKeyValue().equals(str)) {
System.out.println(e);
matchFlag = true;
break;
}
}
if (!matchFlag) {
System.out.println("該当する社員が見つかりませんでした");
}
System.out.println();
break;
}
}
}
}