1、文件读取以及增删操作
public class TeamManager {
//定义参赛队编号
private String number;
//定义参赛作品名称
private String name;
//定义参赛队所在学校
private String school;
//定义参赛作品类型
private String category;
//参赛者
private String players;
//指导老师
private String coach;
public TeamManager(String number, String name, String school, String category, String players, String coach) {
this.number = number;
this.name = name;
this.school = school;
this.category = category;
this.players = players;
this.coach = coach;
读取文件的操作
public static void main(String[] args) {
ArrayList<TeamManager> teams = new ArrayList<>();
try {
File file = new File("C:/Users/LENOVO/Documents/Tencent Files/461413102/FileRecv/team.txt");
BufferedReader reader = new BufferedReader(new FileReader(file));
String line = reader.readLine();
while (line != null) {
String[] data = line.split(" ");
TeamManager team = new TeamManager(data[0], data[1], data[2], data[3], data[4], data[5]);
teams.add(team);
line = reader.readLine();
}
reader.close();
} catch (IOException e) {
e.printStackTrace();
}
2、根据参赛队所在学校查询参赛信息
public static ArrayList<Team> searchTeamBySchool(String school, ArrayList<Team> teams) {
ArrayList<Team> result = new ArrayList<>();
for (Team t : teams) {
if (t.getSchool().equals(school)) {
result.add(t);
}
}
Collections.sort(result, new Comparator<Team>() {
@Override
public int compare(Team o1, Team o2) {
return o1.getNumber() - o2.getNumber();
}
});
return result;
}
3、用二叉树查找学校,并计算ASL
class TreeNode {
String key;
String value;
TreeNode left;
TreeNode right;
//查找结点
public String find(String key) {
if (root == null) {
return null;
}
TreeNode current = root;
while (current != null) {
if (current.key.equals(key)) {
return current.value;
} else if (key.compareTo(current.key) < 0) {
current = current.left;
} else {
current = current.right;
}
}
return null;
}
// 计算平均查找长度
public double calculateASL() {
int totalDepth = calculateDepth(root, 0);
int n = countNodes(root);
return (double) totalDepth / n ;
}