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