簡體   English   中英

如何將關鍵對象(s3)列表篩選(包含特定字符串)到新列表中

[英]How to filter(contains particular string) list of key objects (s3) into a new list

我試圖從包含特定字符串的s3的關鍵對象列表中過濾掉。 這是我的方法:

public List<String>getBucketList3(String filterStr) {

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

        ListObjectsRequest listObjectsRequest = new ListObjectsRequest()
                .withBucketName(bucketName);
        ObjectListing objectListing = s3client.listObjects(listObjectsRequest);
        for (; ; ) {
            List<S3ObjectSummary> summaries = objectListing.getObjectSummaries();
            if (summaries.size() < 1) {
                break;
            }
            summaries.forEach(s -> lst.add(s.getKey()));
            objectListing = s3client.listNextBatchOfObjects(objectListing);
        }

        return lst;
    }

我試圖僅過濾掉包含'filterStr'的關鍵對象,並將其添加到我的'lst'數組列表字符串中。 我試圖使用java 8的stream()來完成它,但是我正在努力解決它。

List<String> list = lst.stream()
        .filter(s -> s.contains(filterStr))
        .collect(Collectors.toList());

如果這是適合您的情況的前提條件,它可以像這樣工作。

您可以嘗試如下操作:

ObjectListing objectListing = s3client.listObjects(listObjectsRequest);
List<S3ObjectSummary> summaries = objectListing.getObjectSummaries();
List<String> lst = new ArrayList<>();
do {
    lst.addAll(summaries.stream()
            .map(S3ObjectSummary::getKey) // creates a string stream
            .filter(s -> s.contains(filterStr)) // filters all values containing filterStr
            .collect(Collectors.toList()));
    objectListing = s3client.listNextBatchOfObjects(objectListing);
    summaries = objectListing.getObjectSummaries();
} while (!summaries.isEmpty());

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM