zoukankan      html  css  js  c++  java
  • 问题:文件位置随意,存储文件格式:id,name,age;读取之后,存入数据库

    package io;
    
    import facetest.IntArray;
    
    import javax.jws.soap.SOAPBinding;
    import java.io.BufferedReader;
    import java.io.FileReader;
    import java.io.IOException;
    import java.util.*;
    
    /**
     * Created by kechunwang on 2020/3/21.
     */
    public class Topic11 {
        /**
         * I/O +集合 +对象
         * 文件:位置随意,数据格式:id,name,gender,score,address
         * 读取出数据之后,放到对象中的User
         * 将User放入集合中
         * 集合中的user,按照address、gender分组,且每个组内的分数还要排序
         * -- 如:北京,男;上海,女
         *
         * 基本素质(异常、对象)
         * 元素问题:文件位置随意,存储文件格式:id,name,age;读取之后,存入数据库
         */
    
        /**
         * 1.读取文件数据
         * 2.对数据进行解析
         * 3.入库
         */
    
        /**
         * 测试:
         *  - 文件属性问题:
         *      -- 文件存在性
         *      -- 文件权限
         *      -- 文件类型:文本文件、视频文件、图片、二进制
         *      -- 文件大小:比如,系统如果是2G内存,文件大小是4个G
         *      --操作系统类型:
         *          Windows,D:\xxx\xxx
         *          mac,/path/xxx
         *          linux, /path/xxx
         *          ubuntu, /path/xxx
         *  - 文件内容
         *      - 文件为空
         *      -空行,跳过去
         *      -格式不正确
         *          + , --> .
         *          + 1或2列
         *          + 1,2,2,
         *          + 无换行
         *      -数据异常
         *          + abc,jjim,23
         *          + 1,jim,abc
         *
         *  -程序逻辑问题
         *      +List,会被干爆,Integer.Max_value
         *      +List 应该给一个预估值
         *      + 关流
         *      + 处理异常
         * @param args
         */
    
        public static void main(String[] args) {
            /**
             * 读取文件
             */
            List<String> strings = readFile("");
            /**
             * 数据解析
             */
            List<User> parse = parse(strings);
            /**
             * 数据根据名字分组
             */
            Map<String, List<User>> groupResult = groupByname(parse);
    
            
    
            /**
             * 排序
             */
            Map<String, List<User>> newGroupResult = sort(groupResult);
            /**
             * 插入数据库
             */
            Integer integer = insertDB(parse);
    
        }
    
        /**
         * 1.读取文件
         * @param path
         * @return
         */
        private static List<String> readFile(String path) {
    
            BufferedReader reader = null;
            List<String> result = new ArrayList<>();
            try {
                reader = new BufferedReader(new FileReader(""));
    
    
                String val = null;
                while ((val=reader.readLine())!= null){
                    result.add(val);
                }
                return result;
            }catch (Exception ex){
                throw new IllegalStateException(ex);
            }finally {
                if (null != reader){
                    try {
                        reader.close();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
            }
    
        }
    
        /**
         * 2.对数据进行解析
         * @param resultData
         * @return
         */
        private static List<User> parse(List<String> resultData) {
            List<User> users = new ArrayList<>();
            for (String data :resultData) {
                String[] splitArr = data.split(",");
                Integer id = Integer.parseInt(splitArr[0]);
                String name = splitArr[1];
                Integer age = Integer.parseInt(splitArr[2]);
                User user = new User(id, name, age);
                users.add(user);
            }
            return users;
        }
    
        private static Map<String,List<User>> groupByname(List<User> users){
    
            Map<String,List<User>> result = new HashMap<>();
            for (User user:users){
                String userName = user.getName();
                if (result.containsKey(userName)){
                    result.get(userName).add(user);
                }else {
                    List<User> userList = new ArrayList<>();
                    userList.add(user);
                    result.put(userName,userList);
                }
    
            }
            return result;
    
        }
    
        private static Map<String,List<User>> sort(Map<String,List<User>> groupResult){
            Map<String,List<User>> result = new HashMap<>();
            for (Map.Entry<String,List<User>> entry:groupResult.entrySet()){
                String groupName = entry.getKey();
                //原始User列表
                List<User> users = entry.getValue();
                //Arrays.sort();
    
                //排序后User列表
                List<User> sortedUsers = sortUser(users);
    
                result.put(groupName,sortedUsers);
    
            }
    
            return result;
        }
        private static List<User> sortUser(List<User> users){
            List<User> result = new ArrayList<>();
            for (int i = 0;i < users.size();i++){
                for (int j = 0; j < i; j++) {
                    User u1 = users.get(i);
                    User u2 = users.get(j);
                    if (u1.getAge() < u2.getAge()){
                        users.set(i,u2);
                        users.set(j,u1);
                    }
                }
            }
            return users;
        }
    
        private static void printGroupResult(Map<String,List<User>> groupResult){
            for (Map.Entry<String,List<User>> entry :groupResult.entrySet()){
                String groupName = entry.getKey();
                List<User> users = entry.getValue();
    
                System.out.println("groupName = " + groupName);
                for (User user : users) {
                    System.out.println("user = " + user);
                }
            }
        }
    
        /**
         * 插入数据库
         * @param users
         * @return
         */
        private static Integer insertDB(List<User> users){
            return -1;
        }
    
    
    }
    View Code
  • 相关阅读:
    Linux 文件系统相关的基本概念
    Logstash : 从 SQL Server 读取数据
    Windows 下配置 Logstash 为后台服务
    通过 Filebeat 收集 ubuntu 系统日志
    Logstash Multiple Pipelines
    零基础学编程
    2017年计划
    2016年的年终总结
    订阅《通往财富自由之路》3个月后,我做出了哪些改变
    2016年第20本:社交红利2.0
  • 原文地址:https://www.cnblogs.com/wangkc/p/12540040.html
Copyright © 2011-2022 走看看