第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Java:將一個列表添加到另一個列表而不復(fù)制引用

Java:將一個列表添加到另一個列表而不復(fù)制引用

肥皂起泡泡 2023-09-06 16:06:10
我想將從 csv 中讀取的每一行作為 sub_list 并將此類 sub_list 添加到 master_list 中。所以它會是這樣的:[[第 1 行] [第 2 行] ....[最后一行]]如何保證master_list中添加的sub_list不受原sub_list變化的影響。我知道這與淺復(fù)制和深復(fù)制有關(guān)。正確的做法是什么。這樣做的原因是因為我可能會在其他地方使用子列表進行其他不同的操作。一旦我需要這樣做,我需要將其中的內(nèi)容清除為空列表。因此,我想對不同的任務(wù)使用相同的列表。import java.io.BufferedReader;import java.io.FileReader;import java.io.IOException;import java.util.ArrayList;import java.util.List;public class CSVReader {    public static void main(String[] args) {        String csvFile = "E:\\country.csv";        String line = "";        String cvsSplitBy = ",";        List<String> sub = new ArrayList<String>();        List<List> master = new ArrayList<List>();        try (BufferedReader br = new BufferedReader(new FileReader(csvFile))) {            while ((line = br.readLine()) != null) {                // use comma as separator                String[] country = line.split(cvsSplitBy);                sub.add(line);                master.add(sub);//              System.out.println(sub);                sub.remove(0);//                System.out.println("Country [code= " + country[4] + " , name=" + country[5] + "]");            }        } catch (IOException e) {            e.printStackTrace();        }        System.out.println(master);    }}這會打印出空列表“[]”。
查看完整描述

3 回答

?
qq_遁去的一_1

TA貢獻1725條經(jīng)驗 獲得超8個贊

兩點:-

1 - 如下更改您的主列表。您不應(yīng)該創(chuàng)建通用列表(原始類型)。如果您將列表創(chuàng)建為原始類型,您將能夠輸入任何數(shù)據(jù)類型。由于可能存在多種數(shù)據(jù)類型列表,因此會產(chǎn)生問題。

2 - 當(dāng)您進入 while 循環(huán)時,創(chuàng)建/分配新引用到子列表,然后將其添加到主列表。

import java.io.BufferedReader;

import java.io.FileReader;

import java.io.IOException;

import java.util.ArrayList;

import java.util.List;


public class CSVReader {


    public static void main(String[] args) {


        String csvFile = "E:\\country.csv";

        String line = "";

        String cvsSplitBy = ",";

        List<String> sub = new ArrayList<String>();

        List<List<String>> master = new ArrayList<>();


        try (BufferedReader br = new BufferedReader(new FileReader(csvFile))) {


            while ((line = br.readLine()) != null) {


                // use comma as separator

                String[] country = line.split(cvsSplitBy);

                sub = new ArrayList<String>();

                sub.add(line);

                master.add(new ArrayList<String>(sub));

//              System.out.println(sub);

                sub.remove(0);


//                System.out.println("Country [code= " + country[4] + " , name=" + country[5] + "]");


            }


        } catch (IOException e) {

            e.printStackTrace();

        }


        System.out.println(master);


    }


}


查看完整回答
反對 回復(fù) 2023-09-06
?
白板的微信

TA貢獻1883條經(jīng)驗 獲得超3個贊

嘗試將變量聲明移到subwhile 塊上。


    String csvFile = "E:\\country.csv";

        String line = "";

        String cvsSplitBy = ",";

        List<List> master = new ArrayList<List>();


        try (BufferedReader br = new BufferedReader(new FileReader(csvFile))) {


            while ((line = br.readLine()) != null) {


                // use comma as separator

                String[] country = line.split(cvsSplitBy);

                List<String> sub = new ArrayList<String>();

                sub.add(line);

                master.add(sub);

//              System.out.println(sub);

//              sub.remove(0);


//                System.out.println("Country [code= " + country[4] + " , name=" + country[5] + "]");


            }


        } catch (IOException e) {

            e.printStackTrace();

        }


        System.out.println(master);


查看完整回答
反對 回復(fù) 2023-09-06
?
幕布斯7119047

TA貢獻1794條經(jīng)驗 獲得超8個贊

你可以這樣做


public static List<String[]> getTestData(String fileName) {

    List<String[]> records = new ArrayList<String[]>();

    try {

        String record;

        BufferedReader file = new BufferedReader(new InputStreamReader(new FileInputStream(fileName), "UTF-8"));

        while ((record = file.readLine()) != null) {

            System.out.println(record);

            String fields[] = record.split(",");

            records.add(fields);

        }

        file.close();

        return records;

    } catch (Exception e) {

        e.printStackTrace();

    }

    return null;

}


查看完整回答
反對 回復(fù) 2023-09-06
  • 3 回答
  • 0 關(guān)注
  • 161 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號