[java]已知文件 source.txt 中的内容如下,其中,username、yonghu 都表示用户名,password、mima都表示密码,level、dengji都表示等级
已知文件 source.txt 中的内容如下
username=root , password= 1234, id=1, level= 10 username= adimin, mima= 1234 , id=2, level= 11 yonghu= xiaoming ,dengji= 12 ,password= 1234,id= 3
其中,username、yonghu 都表示用户名,password、mima都表示密码,level、dengji都表示等级
在桌面上的这个source.txt文件拷贝到项目 file\data.txt 中(注意:方式不限,不是移动!)
读取文本中的数据,将每一行的数据封装成模型,存入 List<User> 中
去除集合中id重复的数据,只保留重复id的第一个数据
计算这些用户的平均等级、最高等级、最低等级
将集合中的数据按照等级降序排序
查询集合中等级为[7,15]范围内的第[4,8]个,并将结果按照id升序
将这个集合序列化到本地,并反序列化遍历
import java.io.*;
import java.nio.ByteBuffer;
import java.nio.channels.FileChannel;
import java.nio.file.Paths;
import java.nio.file.StandardOpenOption;
import java.util.*;
public class homework01 {
public static void main(String[] args) {
//复制文件
// copyToSrc();
List<User> oldList = readFromTxt();
oldList.forEach(System.out::println);
System.out.println("去重id后:");
List<User> newList = removeRepeatId(oldList);
newList.forEach(System.out::println);
IntSummaryStatistics intSummaryStatistics = computeAverOrMaxOrMin(newList);
System.out.println("平均等级="+intSummaryStatistics.getAverage());
System.out.println("最高等级="+intSummaryStatistics.getMax());
System.out.println("最低等级="+intSummaryStatistics.getMin());
newList.sort((u1,u2)->u2.getLevel()-u1.getLevel());
System.out.println("按照等级降序排序后的list:");
newList.forEach(System.out::println);
System.out.println("等级为[7,15]范围内的第[4,8]个,并将结果按照id升序");
newList.stream().sorted(Comparator.comparingInt(User::getId)).filter(ele->ele.getLevel()>=7&&ele.getLevel()<=15).limit(8).skip(3).forEach(System.out::println);
save(newList);
List<User> serializableList = load();
serializableList.sort((n1,n2)->n1.getId()-n2.getId());
System.out.println("反序列化(经过id排序后)");
serializableList.forEach(System.out::println);
}
//反序列化
public static List<User> load(){
List<User> list = new ArrayList<>();
try(ObjectInputStream inputStream = new ObjectInputStream(new FileInputStream("src/file/list"))) {
Object obj = inputStream.readObject();
if(obj instanceof List)
list = ((List) obj).subList(0,((List) obj).size());
} catch (ClassNotFoundException | IOException e) {
e.printStackTrace();
}
return list;
}
//序列化到本地
public static void save(List<User> list){
try(ObjectOutputStream outputStream = new ObjectOutputStream(new FileOutputStream("src/file/list"))) {
outputStream.writeObject(list);
} catch (IOException e) {
e.printStackTrace();
}
}
//计算平均等级,最高等级,最低等级
public static IntSummaryStatistics computeAverOrMaxOrMin(List<User> list){
return list.stream().mapToInt(User::getLevel).summaryStatistics();
}
//去除重复
public static List<User> removeRepeatId(List<User> oldList){
Set<User> userSet = new HashSet<>(oldList);
return new ArrayList<>(userSet);
}
/**
* 读取文本中的数据
*/
public static List<User> readFromTxt(){
List<User> list = new ArrayList<>();
try(BufferedReader reader = new BufferedReader(new FileReader("src/file/data.txt"))) {
String line = "";
while((line=reader.readLine())!=null){
//System.out.println(line);
String[] users = line.split(" *, *");
User newUser = new User();
for (String user : users) {
//System.out.println(user);
if(user.startsWith("id")){
newUser.setId(Integer.parseInt(user.split(" *= *")[1]));
}
if(user.startsWith("username")||user.startsWith("yonghu")){
newUser.setUsername(user.split(" *= *")[1]);
}
if(user.startsWith("password")||user.startsWith("mima")){
newUser.setPassword(user.split(" *= *")[1]);
}
if(user.startsWith("level")||user.startsWith("dengji")){
newUser.setLevel(Integer.parseInt(user.split(" *= *")[1]));
}
}
list.add(newUser);
}
} catch (IOException e) {
e.printStackTrace();
}
return list;
}
/**
* 拷贝
*/
public static void copyToSrc(){
try(FileChannel srcChannel = FileChannel.open(Paths.get("C:\\Users\\dell\\Desktop\\source.txt"), StandardOpenOption.READ);
FileChannel dstChannel = FileChannel.open(Paths.get("src/file/data.txt"),StandardOpenOption.WRITE,StandardOpenOption.CREATE)) {
ByteBuffer buffer = ByteBuffer.allocate(1024);
while(srcChannel.read(buffer)!=-1){
buffer.flip();
dstChannel.write(buffer);
buffer.clear();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
class User implements Serializable{
private int id;
private String username;
private String password;
private int level;
public User() {
}
public User(int id, String username, String password, int level) {
this.id = id;
this.username = username;
this.password = password;
this.level = level;
}
@Override
public String toString() {
return "User{" +
"id=" + id +
", username='" + username + '\'' +
", password='" + password + '\'' +
", level=" + level +
'}';
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
User user = (User) o;
return id == user.id;
}
@Override
public int hashCode() {
return Objects.hash(id);
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public int getLevel() {
return level;
}
public void setLevel(int level) {
this.level = level;
}
}
[java]已知文件 source.txt 中的内容如下,其中,username、yonghu 都表示用户名,password、mima都表示密码,level、dengji都表示等级相关推荐
- 文件读写操作:把文件a.txt中的内容复制到文件b.txt中
文件读写操作:把文件a.txt中的内容复制到文件b.txt中 package com.io.reader;import java.io.File; import java.io.FileNotFoun ...
- 已知:切比雪夫多项式如下:编写一段程序,输入n,x,并将0-n的所有Tn(x)的值输出导到文件tdat.txt中。
已知:切比雪夫多项式如下: Tn(x)= 1 (n=0) x (n=1) 2xTn-1(x)-Tn-2(x) ...
- JAVA已知圆心经纬度和半径求圆周点的经纬度
JAVA已知圆心经纬度和半径求圆周点的经纬度 项目中遇到一个需求,需要根据传入的圆心经纬度和半径参数获得圆周点的经纬度,在网上查询了很多没有找到能用的算法,从GPT中获取到了一个简洁的用java实现的 ...
- 如何过滤出已知当前目录下/llj中的所有一级目录?
测试环境,/llj下有许多的目录.文件等: [root@test llj]# ll total 0 drwxr-xr-x 2 root root 17 Dec 3 10:04 ext -rw-r--r ...
- 编写一个程序。要求输入5个学生的成绩(从0到100的整数)并将这5个数保存到文件“data.txt”中,然后再编写一个程序,从文件“data.txt”中读取这5个学生的成绩,计算并输出他们的平均数,然
编写一个程序.要求输入5个学生的成绩(从0到100的整数)并将这5个数保存到文件"data.txt"中,然后再编写一个程序,从文件"data.txt"中读取这5 ...
- 计算机如何把文件设为隐藏,已知文件类型的扩展名如何设置显示与隐藏?
当你想把文件扩展名隐藏或是显示的时候,有木有突然感觉有那么一瞬间皱着眉头过呢?当你想要设置显示与隐藏扩展名的时候却莫名其妙的发现"隐藏已知文件类型的扩展名"这一项选不见了,心理莫名 ...
- 在excel工作表中c1单元格_已知Excel工作表中A1单元格和B1单元格的值分别为“电子科技大学”、“信息中心”,要求在C1单元格显示“...
已知Excel工作表中A1单元格和B1单元格的值分别为"电子科技大学"."信息中心",要求在C1单元格显示" 更多相关问题 所谓犯罪现象的特性,是指为 ...
- 已知后序与中序输出前序(先序)
已知后序与中序输出前序(先序): 后序:3, 4, 2, 6, 5, 1(左右根) 中序:3, 2, 4, 1, 6, 5(左根右) 分析:因为后序的最后一个总是根结点,令i在中序中找到该根结点,则i ...
- 数据结构----二叉树已知先序和中序遍历序列求后序遍历
说明 通过先序和中序或者中序和后序我们可以还原出原始二叉树,但是通过先序和后序是无法还原出原始二叉树也即是说,只有通过先序和中序,或者中序和后序我们才可以唯一的确定一个二叉树. 例子一 已知先序和中序 ...
最新文章
- 从自来水公司到社会工作者再做运维,我深耕 IT 一线的这 8 年
- Docker Hub 镜像加速器
- 5G时代的CDN将会怎么样?
- Classification分类halcon算子,持续更新
- 【.NET Core 3.0】框架之十二 || 跨域 与 Proxy
- PostgreSQL 函数调试、诊断、优化 auto_explain
- 为什么说Java 程序员必须掌握 Spring Boot?
- (新聞) 2008 Altera 亞洲創新大賽 台灣學生成果傲視全球
- Go的50坑:新Golang开发者要注意的陷阱、技巧和常见错误[1]
- oracle 数组的用法,Oracle数组用法
- Alats2种局部刷新的比较
- Java设计模式--抽象工厂模式
- 没想到,我能这么细心地看算法
- Java MD5加密工具包
- 安卓c语言hook,C语言hook技术实现木马功能-盗QQ密码
- 同比增长和环比增长的区别
- matlab出现错误使用 / 矩阵维度必须一致
- uni-app开发桌面应用
- 神经网络模型的工作原理,人脑神经网络模型
- 未来计算机网络会发展成什么样子,计算机网络技术未来的发展与应用
热门文章
- python 论文写作_AI基础:论文写作工具
- python条件运算符_Python中的条件运算符
- spm使用之三spm应用实例
- ChatGPT 客户端来喽
- html制作统计期末成绩,如何用Excel制作学生成绩统计表
- 深入学习下 CSS filter 相关的神奇属性
- 已解决org.springframework.beans.factory.UnsatisfiedDependencyException org.springframework.beans.factor
- 05LaTeX学习系列之---TeX的命令行操作
- 如何利用python进行一次移动平均预测
- 内部寄存器:通用寄存器、控制寄存器、段寄存器