在文件student.txt中存在以下信息:
班级与班级之间用$隔开
学生和班级之间用|隔开
学生与学生之间用@隔开
表示英雄班有学生项羽,蒙恬,霍去病,卫青,岳飞
实现以下需求:
package New_QiMoTiKu.Q_4;
import java.io.*;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Scanner;
import java.util.Set;
public class Test {
//创建map集合存储班级,学生
static HashMap<String, ArrayList<String>> map=new HashMap<>();
static Scanner sc=new Scanner(System.in);
public static void main(String[] args) throws IOException {
while (true){
System.out.println("请输入操作编号:");
System.out.println("1.读取文件 2.显示所有班级和学生信息 3.添加学生 4.写入文件 9.退出");
int in=sc.nextInt();
switch (in){
case 1:
fun1();
break;
case 2:
fun2();
break;
case 3:
fun3();
break;
case 4:
fun4();
break;
case 9:
System.out.println("退出");
return;
}
}
}
public static void fun1() throws IOException {
BufferedReader br=new BufferedReader(
new FileReader("student.txt")
);
String s=br.readLine();
br.close();
//分割
String[] str=s.split("\\$");
for (String s1 : str) {
String[] str2=s1.split("\\|");
//班级
String ban=str2[0];
String[] str3=str2[1].split("\\@");
//学生录入ArrayList集合中
ArrayList<String> list=new ArrayList<>();
for (String s2 : str3) {
list.add(s2);
}
map.put(ban,list);
}
System.out.println("读取成功!");
}
public static void fun2(){
Set<String> keySet = map.keySet();
for (String key : keySet) {
System.out.println(key);
ArrayList<String> list1 = map.get(key);
for (String s1 : list1) {
System.out.println(" "+s1);
}
System.out.println("------------------");
}
}
public static void fun3(){
ArrayList<String> list=new ArrayList<>();
System.out.println("请输入班级名称:");
String ban=sc.next();
Set<String> keySet = map.keySet();
for (String key : keySet) {
if (ban.equals(key)) {
System.out.println("班级已存在,请直接输入学生姓名");
while (true) {
System.out.println("请输入学生姓名:");
String name = sc.next();
if (list.contains(name)){
System.out.println("学生已经存在,请重新输入");
}else{
list.add(name);
map.put(ban,list );
}
System.out.println("是否继续? y继续 ,n录入完成");
String ji = sc.next();
if (ji.equals("y")) {
continue;
} else if (ji.equals("n")) {
break;
}
}
} else {
while (true) {
System.out.println("请输入学生姓名:");
String name = sc.next();
list.add(name);
System.out.println("是否继续? y继续 ,n录入完成");
String ji = sc.next();
if (ji.equals("y")) {
continue;
} else if (ji.equals("n")) {
break;
}
map.put(ban,list);
}
}
}
}
public static void fun4() throws IOException {
BufferedWriter bw=new BufferedWriter(
new FileWriter("student.txt")
);
Set<String> keySet = map.keySet();
for (String key : keySet) {
bw.write(key+"|");
ArrayList<String> list = map.get(key);
for (int i = 0; i < list.size(); i++) {
if (i==list.size()-1){
bw.write(list.get(i)+"$");
}else{
bw.write(list.get(i)+"@");
}
}
bw.newLine();
}
bw.close();
System.out.println("写入文件成功");
}
}
修改集合中的覆盖原内容的问题(使其往后添加内容)???