亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

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

有沒有辦法將流的結果轉換為數組并循環訪問數組元素?

有沒有辦法將流的結果轉換為數組并循環訪問數組元素?

Cats萌萌 2022-09-22 19:30:35
我已經創建了一個遞歸運行的文件和文件夾的數量。我需要將 的結果轉換為 并循環訪問 .StreamStreamArrayArray我在使用以下代碼時遇到問題:try (Stream<Path> stream = Files.walk(start, Integer.MAX_VALUE)) {        List<String> collect = stream            .stream().map(x->x.getName())            .filter(s -> s.toString().endsWith(".txt"))            .sorted()            .collect(Collectors.toList())            .toArray();        collect.forEach(System.out::println);    }    String[] listfiles = new String[stream.length];    for (int i = 0; i < stream.length; i++) {       listfiles[i] = stream[].getName();    }
查看完整描述

1 回答

?
12345678_0001

TA貢獻1802條經驗 獲得超5個贊

您發布的代碼存在一些問題。

  1. 您撥打stream.stream()

    • 該類沒有方法。它使用這種方法是沒有意義的,因為它已經是一個流。Streamstream()

  2. 您撥打x.getName()

    • 此時,是一個沒有方法的??梢允褂?,它返回一個 、 或 ,它將路徑作為字符串返回,或者將兩者組合在一起,僅將文件名作為字符串獲取。xPathgetName()getFileName()PathtoString()

  3. 將 分配給 的結果。List<String> collectCollection.toArray()

    • 該方法返回一個 .Object[]

  4. 在調用 之前使用 。collect(Collectors.toList())toArray()

    • 該類有一個方法,如果數組是所需的最終結果,則沒有理由首先收集到列表中。StreamtoArray()

  5. 使用哪個返回(包括 for 和toArray()Object[]StreamCollection)

  6. 您在塊外使用。streamtry

    • 由于是塊的本地,因此不能在塊外使用它。您也沒有理由在塊之外使用它,因為您只需要結果。streamtrytryString[]

  7. 您嘗試執行類似 執行的操作。stream[]

    • A 不是數組,不能像數組一樣訪問。此外,a不是容器,而是管道;嘗試訪問其中的某些元素沒有意義。StreamStream

    • 這也適用于 因為 沒有字段(同樣,因為它不是數組)。stream.lengthStreamlength


解決這些問題,您的代碼可能如下所示(基于代碼的當前形式,因為我不確定您到底要做什么):

String[] result;try (Stream<Path> stream = Files.walk(start, Integer.MAX_VALUE)) {
    result = stream.map(Path::toString)
            .filter(s -> s.endsWith(".txt"))
            .sorted()
            .toArray(String[]::new);
}for (int i = 0; i < result.length; i++) {  
  // do something
  }

您也可以考慮使用文件查找(路徑,整數,雙向預測,文件訪問選項...)和/或路徑墊。


查看完整回答
反對 回復 2022-09-22
  • 1 回答
  • 0 關注
  • 85 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號