已知文件 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都表示等级相关推荐

  1. 文件读写操作:把文件a.txt中的内容复制到文件b.txt中

    文件读写操作:把文件a.txt中的内容复制到文件b.txt中 package com.io.reader;import java.io.File; import java.io.FileNotFoun ...

  2. 已知:切比雪夫多项式如下:编写一段程序,输入n,x,并将0-n的所有Tn(x)的值输出导到文件tdat.txt中。

    已知:切比雪夫多项式如下: Tn(x)=               1                (n=0) x                (n=1) 2xTn-1(x)-Tn-2(x)  ...

  3. JAVA已知圆心经纬度和半径求圆周点的经纬度

    JAVA已知圆心经纬度和半径求圆周点的经纬度 项目中遇到一个需求,需要根据传入的圆心经纬度和半径参数获得圆周点的经纬度,在网上查询了很多没有找到能用的算法,从GPT中获取到了一个简洁的用java实现的 ...

  4. 如何过滤出已知当前目录下/llj中的所有一级目录?

    测试环境,/llj下有许多的目录.文件等: [root@test llj]# ll total 0 drwxr-xr-x 2 root root 17 Dec 3 10:04 ext -rw-r--r ...

  5. 编写一个程序。要求输入5个学生的成绩(从0到100的整数)并将这5个数保存到文件“data.txt”中,然后再编写一个程序,从文件“data.txt”中读取这5个学生的成绩,计算并输出他们的平均数,然

    编写一个程序.要求输入5个学生的成绩(从0到100的整数)并将这5个数保存到文件"data.txt"中,然后再编写一个程序,从文件"data.txt"中读取这5 ...

  6. 计算机如何把文件设为隐藏,已知文件类型的扩展名如何设置显示与隐藏?

    当你想把文件扩展名隐藏或是显示的时候,有木有突然感觉有那么一瞬间皱着眉头过呢?当你想要设置显示与隐藏扩展名的时候却莫名其妙的发现"隐藏已知文件类型的扩展名"这一项选不见了,心理莫名 ...

  7. 在excel工作表中c1单元格_已知Excel工作表中A1单元格和B1单元格的值分别为“电子科技大学”、“信息中心”,要求在C1单元格显示“...

    已知Excel工作表中A1单元格和B1单元格的值分别为"电子科技大学"."信息中心",要求在C1单元格显示" 更多相关问题 所谓犯罪现象的特性,是指为 ...

  8. 已知后序与中序输出前序(先序)

    已知后序与中序输出前序(先序): 后序:3, 4, 2, 6, 5, 1(左右根) 中序:3, 2, 4, 1, 6, 5(左根右) 分析:因为后序的最后一个总是根结点,令i在中序中找到该根结点,则i ...

  9. 数据结构----二叉树已知先序和中序遍历序列求后序遍历

    说明 通过先序和中序或者中序和后序我们可以还原出原始二叉树,但是通过先序和后序是无法还原出原始二叉树也即是说,只有通过先序和中序,或者中序和后序我们才可以唯一的确定一个二叉树. 例子一 已知先序和中序 ...

最新文章

  1. 从自来水公司到社会工作者再做运维,我深耕 IT 一线的这 8 年
  2. Docker Hub 镜像加速器
  3. 5G时代的CDN将会怎么样?
  4. Classification分类halcon算子,持续更新
  5. 【.NET Core 3.0】框架之十二 || 跨域 与 Proxy
  6. PostgreSQL 函数调试、诊断、优化 auto_explain
  7. 为什么说Java 程序员必须掌握 Spring Boot?
  8. (新聞) 2008 Altera 亞洲創新大賽 台灣學生成果傲視全球
  9. Go的50坑:新Golang开发者要注意的陷阱、技巧和常见错误[1]
  10. oracle 数组的用法,Oracle数组用法
  11. Alats2种局部刷新的比较
  12. Java设计模式--抽象工厂模式
  13. 没想到,我能这么细心地看算法
  14. Java MD5加密工具包
  15. 安卓c语言hook,C语言hook技术实现木马功能-盗QQ密码
  16. 同比增长和环比增长的区别
  17. matlab出现错误使用 / 矩阵维度必须一致
  18. uni-app开发桌面应用
  19. 神经网络模型的工作原理,人脑神经网络模型
  20. 未来计算机网络会发展成什么样子,计算机网络技术未来的发展与应用

热门文章

  1. python 论文写作_AI基础:论文写作工具
  2. python条件运算符_Python中的条件运算符
  3. spm使用之三spm应用实例
  4. ChatGPT 客户端来喽
  5. html制作统计期末成绩,如何用Excel制作学生成绩统计表
  6. 深入学习下 CSS filter 相关的神奇属性
  7. 已解决org.springframework.beans.factory.UnsatisfiedDependencyException org.springframework.beans.factor
  8. 05LaTeX学习系列之---TeX的命令行操作
  9. 如何利用python进行一次移动平均预测
  10. 内部寄存器:通用寄存器、控制寄存器、段寄存器