最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java如何讀取csv文件并將數(shù)據(jù)放入對(duì)象中

 更新時(shí)間:2025年04月22日 09:00:30   作者:早睡早起愛學(xué)習(xí)i  
這篇文章主要介紹了Java如何讀取csv文件并將數(shù)據(jù)放入對(duì)象中的實(shí)現(xiàn)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

讀取csv文件并封裝數(shù)據(jù)為對(duì)象

例如

圖中的一個(gè) .csv 文件,需要讀取數(shù)據(jù)封裝對(duì)象進(jìn)行數(shù)據(jù)持久化。

public static void readCSV(String readpath, ArrayList list)
{
    File inFile = new File(readpath);
    try
    {
        BufferedReader reader = new BufferedReader(new FileReader(inFile));
        boolean sign = false;       //用來跳過第一行的名稱
        while(reader.ready())
        {
            String line = reader.readLine();
            StringTokenizer st = new StringTokenizer(line, ",");
            int date, time, num_transaction, response_time;
            double sucRate;

            if (st.hasMoreTokens() && sign)
            {
                date = Integer.valueOf(st.nextToken().trim());
                time = Integer.valueOf(st.nextToken().trim());
                num_transaction = Integer.valueOf(st.nextToken().trim());
                sucRate = Double.valueOf(st.nextToken().trim());
                response_time = Integer.valueOf(st.nextToken().trim());

                Sample sample = new Sample(date, time, num_transaction, sucRate, response_time);
                list.add(sample);
            }
            else
            {
                sign = true;
            }
        }
        reader.close();

    }
    catch (FileNotFoundException e)
    {

        e.printStackTrace();
    }
    catch (IOException e)
    {

        e.printStackTrace();
    }
}

當(dāng)有多個(gè)對(duì)象時(shí)

可以傳入一個(gè) Class對(duì)象來獲取到需要封裝對(duì)象的類名,進(jìn)一步實(shí)現(xiàn)方法一般化:

public class ReadCSV {
    public static void readCSV(InputStream inputStream, ArrayList<Object> list, Class cls){
        BufferedReader reader = null;
        try {
            reader = new BufferedReader(new InputStreamReader(inputStream));
            boolean flag = false;
            ArrayList<String> headerList = new ArrayList();
            while(reader.ready()){
                String line = reader.readLine();
                StringTokenizer st = new StringTokenizer(line,",");
                        //處理當(dāng)前行數(shù)據(jù)
                if(st.hasMoreTokens() && flag){
                    String typeName = cls.getSimpleName();
                    //如果文件中存儲(chǔ)的是 EnergyProvince類信息
                    if(typeName.equals("EnergyProvice")){
                        String provinceName = st.nextToken();
//                        Float year2019 = Float.valueOf(st.nextToken());
//                        Float year2018 = Float.valueOf(st.nextToken());
                        Float year2017 = Float.valueOf(st.nextToken());
                        Float year2016 = Float.valueOf(st.nextToken());
                        Float year2015 = Float.valueOf(st.nextToken());
                        Float year2014 = Float.valueOf(st.nextToken());
                        Float year2013 = Float.valueOf(st.nextToken());
                        Float year2012 = Float.valueOf(st.nextToken());
                        Float year2011 = Float.valueOf(st.nextToken());
                        Map<String,Float> dataMap = new HashMap();
//                        dataMap.put(headerList.get(1),year2019);
//                        dataMap.put(headerList.get(2),year2018);
                        dataMap.put(headerList.get(1),year2017);
                        dataMap.put(headerList.get(2),year2016);
                        dataMap.put(headerList.get(3),year2015);
                        dataMap.put(headerList.get(4),year2014);
                        dataMap.put(headerList.get(5),year2013);
                        dataMap.put(headerList.get(6),year2012);
                        dataMap.put(headerList.get(7),year2011);
                        list.add(new EnergyProvice(provinceName,dataMap));
                    }
                }
                else{   //添加表頭到 List 集合
                    while(st.hasMoreTokens()){
                        headerList.add(st.nextToken());
                    }
                    flag=true;
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            if(reader!=null)
                try {
                    reader.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
        }
    }

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 詳解java IO流之緩沖流的使用

    詳解java IO流之緩沖流的使用

    本文主要介紹了java的IO流中的緩沖流的使用,緩沖流分為字節(jié)和字符緩沖流。分享了有關(guān)它們的實(shí)例代碼,具有一定的參考價(jià)值,下面跟著小編一起來看下吧
    2017-01-01
  • Java中將UUID存儲(chǔ)為Base64字符串的方法實(shí)現(xiàn)

    Java中將UUID存儲(chǔ)為Base64字符串的方法實(shí)現(xiàn)

    使用Base64編碼來對(duì)UUID存儲(chǔ)在一些特定的場合被廣泛的使用,本文主要介紹了Java中將UUID存儲(chǔ)為Base64字符串的方法實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-04-04
  • IntelliJ IDEA引入第三方j(luò)ar包或查看Java源碼的時(shí)候報(bào)decompiled.class file bytecode version:52.0(java 8)錯(cuò)誤的解決辦法

    IntelliJ IDEA引入第三方j(luò)ar包或查看Java源碼的時(shí)候報(bào)decompiled.class file byt

    今天小編就為大家分享一篇關(guān)于IntelliJ IDEA引入第三方j(luò)ar包或查看Java源碼的時(shí)候報(bào)decompiled.class file bytecode version:52.0(java 8)錯(cuò)誤的解決辦法,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧
    2018-10-10
  • Java中的CAS無鎖機(jī)制實(shí)現(xiàn)原理詳解

    Java中的CAS無鎖機(jī)制實(shí)現(xiàn)原理詳解

    這篇文章主要介紹了Java中的CAS無鎖機(jī)制實(shí)現(xiàn)原理詳解,無鎖機(jī)制,是樂觀鎖的一種實(shí)現(xiàn),并發(fā)情況下保證對(duì)共享變量值更改的原子性,CAS是Java中Unsafe類里面的方法,底層通過調(diào)用C語言接口,再通過cup硬件指令保證原子性,需要的朋友可以參考下
    2024-01-01
  • springboot?@Validated的概念及示例實(shí)戰(zhàn)

    springboot?@Validated的概念及示例實(shí)戰(zhàn)

    這篇文章主要介紹了springboot?@Validated的概念以及實(shí)戰(zhàn),使用?@Validated?注解,Spring?Boot?應(yīng)用可以有效地實(shí)現(xiàn)輸入驗(yàn)證,提高數(shù)據(jù)的準(zhǔn)確性和應(yīng)用的安全性,本文結(jié)合實(shí)例給大家講解的非常詳細(xì),需要的朋友可以參考下
    2024-04-04
  • 在IDEA中安裝scala、maven、hadoop遇到的問題小結(jié)

    在IDEA中安裝scala、maven、hadoop遇到的問題小結(jié)

    這篇文章主要介紹了在IDEA中安裝scala、maven、hadoop遇到的問題小結(jié),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-10-10
  • Springboot如何讀取resources下的json配置文件

    Springboot如何讀取resources下的json配置文件

    這篇文章主要介紹了Springboot如何讀取resources下的json配置文件問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-07-07
  • 一文詳解SpringBoot中CommandLineRunner接口

    一文詳解SpringBoot中CommandLineRunner接口

    Spring Boot的CommandLineRunner接口是一個(gè)函數(shù)式接口,用于在Spring Boot應(yīng)用程序啟動(dòng)后執(zhí)行一些初始化操作,它提供了一個(gè)run方法,該方法在應(yīng)用程序啟動(dòng)后被調(diào)用,本文給大家詳細(xì)介紹了SpringBoot中CommandLineRunner接口,需要的朋友可以參考下
    2023-10-10
  • 關(guān)于maven使用過程中無法導(dǎo)入依賴的一些總結(jié)

    關(guān)于maven使用過程中無法導(dǎo)入依賴的一些總結(jié)

    這篇文章主要介紹了關(guān)于maven使用過程中無法導(dǎo)入依賴的一些總結(jié),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-08-08
  • Java中超詳細(xì)this與super的概念和用法

    Java中超詳細(xì)this與super的概念和用法

    這篇文章主要介紹了Java中超詳細(xì)this與super的概念和用法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-02-02

最新評(píng)論

蒲江县| 攀枝花市| 理塘县| 阿拉善盟| 文水县| 延安市| 阜南县| 金山区| 青冈县| 许昌县| 潼关县| 屏山县| 红安县| 漾濞| 平乡县| 南昌县| 葫芦岛市| 苍溪县| 兴义市| 凉城县| 阿拉善左旗| 绥江县| 安溪县| 手游| 南安市| 贺兰县| 太仓市| 定南县| 陇西县| 秀山| 北票市| 浪卡子县| 阜宁县| 南康市| 陕西省| 巢湖市| 平凉市| 洞口县| 义乌市| 曲阳县| 长岛县|