问题:文件位置随意,存储文件格式: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

 

posted @ 2020-03-21 16:39  鸿飞冥冥  阅读(207)  评论(0编辑  收藏  举报