• Java读取TXT文件内容-转成实体-并使用JDK8的排序输出


    ReadTxt.java:

    package test;
    
    import java.io.BufferedReader;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.util.ArrayList;
    import java.util.Collections;
    import java.util.Comparator;
    import java.util.List;
    
    /**
     * Java读取TXT文件内容-转成实体-并使用JDK8的排序输出
     *
     * 
     * @since: v1.0
     */
    public class ReadTxt {
    
        /**
         * @param args
         * @throws IOException
         */
        public static void main(String[] args) throws IOException {
            List<User> list = initList();
            // jdk8之前的排序
            Collections.sort(list, new Comparator<User>() {
                @Override
                public int compare(User o1, User o2) {
                    return String.valueOf(o1.getAge()).compareTo(String.valueOf(o2.getAge()));
                }
            });
    
            // jdk8 lambda排序,带参数类型
            list = initList();
            list.sort((User u1, User u2) -> String.valueOf(u1.getAge()).compareTo(String.valueOf(u2.getAge())));
            list.forEach(System.out::println);
    
            System.out.println();
    
            // jdk8 lambda排序,不带参数类型
            list = initList();
            list.sort((u1, u2) -> String.valueOf(u1.getAge()).compareTo(String.valueOf(u2.getAge())));
            list.forEach(System.out::println);
    
            System.out.println();
    
            // jdk8 升序排序,Comparator提供的静态方法
            list = initList();
            Collections.sort(list, Comparator.comparing(User::getAge));
            list.forEach(System.out::println);
    
            System.out.println();
    
            // jdk8 降序排序,Comparator提供的静态方法
            list = initList();
            Collections.sort(list, Comparator.comparing(User::getAge).reversed());
            list.forEach(System.out::println);
    
            System.out.println();
    
            // jdk8 组合排序,Comparator提供的静态方法,先按年纪排序,年纪相同的按名称排序
            list = initList();
            Collections.sort(list, Comparator.comparing(User::getAge).thenComparing(User::getName));
            list.forEach(System.out::println);
        }
    
        /**
         * 读入TXT文件
         *
         * @return
         * @throws IOException
         */
        private static List<User> initList() throws IOException {
            List<User> list = new ArrayList<>();
            String pathname = "E:\macroviewPro\IPT_AmwayTest\src\test\resources\User.txt"; // 绝对路径或相对路径都可以,这里是绝对路径,写入文件时演示相对路径
            File filename = new File(pathname); // 要读取以上路径的input。txt文件
            InputStreamReader reader = new InputStreamReader(new FileInputStream(filename)); // 建立一个输入流对象reader
            BufferedReader br = new BufferedReader(reader); // 建立一个对象,它把文件内容转成计算机能读懂的语言
            String line = ""; // 每一行的内容
            int i = 1;
            while ((line = br.readLine()) != null) {
                String[] split = line.trim().split("\s+");// .trim()可以去掉首尾多余的空格
                // .split("\s+")表示用正则表达式去匹配切割,\s+表示匹配一个或者以上的空白符
                if (i > 1) { // 第一行不要
                    list.add(new User(split[0], Integer.valueOf(split[1]))); // 添加一个User实体
                }
                i++;
            }
            reader.close();
            br.close();
            return list;
        }
    }

    User.java:

    package test;
    
    /**
     *
     *
     * 
     * @since: v1.0
     */
    public class User {
        private String name;
        private int age;
        
        public User(String name, int age) {
            this.name = name;
            this.age = age;
        }
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
        public int getAge() {
            return age;
        }
        public void setAge(int age) {
            this.age = age;
        }
        
        @Override
        public String toString() {
            return "User [name=" + name + ", age=" + age + "]";
        }
    }
  • 相关阅读:
    JAVA内存结构解析
    Android(IPC)进程间通讯1:详解Binder由来?
    Python-快速排序算法
    扫描二维码、条形码,生成二维码
    ios常用方法
    UITableView定义等高的cell
    UITableView总结
    Swift——常量&变量
    iOS平台Cordova插件的开发方法
    自定义iWatch App点击Glance后的跳转页
  • 原文地址:https://www.cnblogs.com/RealWorld/p/7640787.html
Copyright © 2020-2023  润新知