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

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

使用流從 Java 8 中的文件中讀取特定列,并將它們放入二維數(shù)組中

使用流從 Java 8 中的文件中讀取特定列,并將它們放入二維數(shù)組中

狐的傳說 2023-02-16 17:16:29
我有一個看起來像這樣的輸入文件@id1   1.2   3.4@id2   6.8   8.1@id3   1.5   9.4@id4   5.9   2.7我只想將數(shù)字存儲在二維數(shù)組中,而忘記包含 @id 的第一列。我還想只為該操作使用流。到目前為止,我做了兩種方法:第一種方法讀取輸入文件并將每一行存儲在列表中,作為字符串?dāng)?shù)組:private List<String[]> savefromfile(String filePath) throws IOException {        List<String[]> rowsOfFile = new LinkedList<String[]>();        try (Stream<String> lines = Files.lines(Paths.get(filePath))) {            lines.forEach(line -> {                String rows[] = line.trim().split("\\s+");                rowsOfFile.add(rows);            });            lines.close();        }        return rowsOfFile;第二種方法將列表作為輸入,并返回一個僅包含列號的二維數(shù)組:private double[][] storeAllID(List<String[]> rowsOfFile) {        int numberOfID = rowsOfFile.size();        double[][] allID = new double[numberOfID][2];        int i = 0;        for (String[] line : rowsOfFile) {            double id[] = new double[2];            id[0] = Double.parseDouble(line[1]);             id[1] = Double.parseDouble(line[2]);            allID[i++] = id;        }        return allID;    }有沒有辦法讓這段代碼更有效率?我只想要一個簡短的方法來讀取輸入文件并返回一個僅包含數(shù)字的二維數(shù)組。我不認(rèn)為有必要寫 20 行代碼來做到這一點(diǎn)。
查看完整描述

1 回答

?
人到中年有點(diǎn)甜

TA貢獻(xiàn)1895條經(jīng)驗(yàn) 獲得超7個贊

使用 中的流并沒有真正獲得任何好處savefromfile,因?yàn)槟褂盟拖袷褂闷胀ǖ?for 循環(huán)一樣。為了使代碼更簡潔一些,您可以完全擺脫局部變量,并且close()不需要調(diào)用 ,因?yàn)槟呀?jīng)在使用 try-with-resources 了。


private List<String[]> savefromfile(String filePath) throws IOException {

    try (Stream<String> lines = Files.lines(Paths.get(filePath))) {

        return lines

            .map(line -> line.trim().split("\\s+"))

            .collect(Collectors.toCollection(LinkedList::new));

    }

}

我不知道你為什么要將對 double[][] 的解析分離到一個單獨(dú)的方法中,因?yàn)槟憧梢栽谀愕牧髦惺褂糜成鋪硗瓿伤?/p>


    private double[][] loadFromFile(String filePath) throws IOException {

        try (Stream<String> lines = Files.lines(Paths.get(filePath))) {

            return lines

                .map(line -> line.trim().split("\\s+"))

                .map(line -> new double[] {

                    Double.parseDouble(line[1]),

                    Double.parseDouble(line[2])

                })

                .toArray(double[][]::new);

        }

    }

對于性能,您只需要自己衡量使用較低級別的數(shù)據(jù)類型和循環(huán)是否值得增加復(fù)雜性。


查看完整回答
反對 回復(fù) 2023-02-16
  • 1 回答
  • 0 關(guān)注
  • 146 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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