创建实体类Emp 包含名字,年龄,性别,毕业学校,然后创建对象 给名字赋值为A-Z字母开头, 加上0-1000的随机数,年龄15-30的随机数 性别随机男和女毕业院校可选为(“虹猫”,“农大”,“湘南",“中南大学”,“软件学院”)然后插入300条数据存入emp.txt文件中 按行写入 (以name,age,gender,school存入) 接下来读取数据, 存入list集合 进行一下操作 1.以名字为key 对象为value 2.按照年龄对元素进行排序, 将所有元素存入map集合
时间: 2024-03-02 19:54:18 浏览: 85
好的,我理解了你的问题。下面是我给出的解答,希望对你有所帮助。
首先,我们需要创建实体类 `Emp`,包含名字、年龄、性别、毕业学校四个属性:
```java
public class Emp {
private String name;
private int age;
private String gender;
private String school;
// 构造方法
public Emp(String name, int age, String gender, String school) {
this.name = name;
this.age = age;
this.gender = gender;
this.school = school;
}
// getter 和 setter 方法
// 省略...
}
```
接下来,我们可以编写一个类来生成随机的 `Emp` 对象,并将它们写入到 `emp.txt` 文件中。代码如下:
```java
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Random;
public class EmpGenerator {
private static final String[] schools = {"虹猫", "农大", "湘南", "中南大学", "软件学院"};
public static void main(String[] args) {
try (BufferedWriter writer = new BufferedWriter(new FileWriter("emp.txt"))) {
Random random = new Random();
for (int i = 0; i < 300; i++) {
String name = (char) (random.nextInt(26) + 'A') + "" + random.nextInt(1000);
int age = random.nextInt(16) + 15;
String gender = random.nextBoolean() ? "男" : "女";
String school = schools[random.nextInt(schools.length)];
Emp emp = new Emp(name, age, gender, school);
writer.write(emp.getName() + "," + emp.getAge() + "," + emp.getGender() + "," + emp.getSchool() + "\n");
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
```
在上面的代码中,我们使用了 `java.util.Random` 类来生成随机数,并使用了 `BufferedWriter` 类将数据写入到文件中。
接下来,我们需要读取 `emp.txt` 文件中的数据,并将它们存入到 `List` 集合中:
```java
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class EmpReader {
public static void main(String[] args) {
List<Emp> empList = new ArrayList<>();
try (BufferedReader reader = new BufferedReader(new FileReader("emp.txt"))) {
String line;
while ((line = reader.readLine()) != null) {
String[] fields = line.split(",");
String name = fields[0];
int age = Integer.parseInt(fields[1]);
String gender = fields[2];
String school = fields[3];
Emp emp = new Emp(name, age, gender, school);
empList.add(emp);
}
} catch (IOException e) {
e.printStackTrace();
}
// 以名字为key,对象为value
Map<String, Emp> empMap = new HashMap<>();
for (Emp emp : empList) {
empMap.put(emp.getName(), emp);
}
// 按照年龄对元素进行排序,将所有元素存入map集合
empList.sort(Comparator.comparingInt(Emp::getAge));
Map<Integer, Emp> ageMap = new HashMap<>();
for (Emp emp : empList) {
ageMap.put(emp.getAge(), emp);
}
}
}
```
在上面的代码中,我们使用了 `java.util.BufferedReader` 类来读取文件中的数据,并使用了 `List` 集合将 `Emp` 对象存储起来。然后,我们使用 `Map` 集合将所有的 `Emp` 对象以名字为 key 存储起来,以供后续查询使用。最后,我们使用 `Lambda` 表达式来对 `List` 集合中的元素按照年龄进行排序,并使用 `Map` 集合将所有的 `Emp` 对象以年龄为 key 存储起来。
综上所述,这就是我给出的解答。希望能够帮助到你。
阅读全文