【问题标题】:How to filter(contains particular string) list of key objects (s3) into a new list如何将关键对象(s3)的列表(包含特定字符串)过滤到新列表中
【发布时间】:2019-03-21 14:49:16
【问题描述】:

我试图从包含特定字符串的 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() 来完成它,但我正在努力解决它。

【问题讨论】:

    标签: java amazon-web-services amazon-s3 arraylist java-stream


    【解决方案1】:

    你可以试试这样的:

    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());
    

    【讨论】:

      【解决方案2】:
      List<String> list = lst.stream()
              .filter(s -> s.contains(filterStr))
              .collect(Collectors.toList());
      

      如果这是适合您的情况的正确谓词,它可以这样工作。

      【讨论】:

      • 我正在过滤summaries 列表,它是: List 列表类型...我想获取与我的字符串过滤器(filterStr)匹配的所有键并将这个键添加到我的列表(lst)中列表 类型。
      • 您可以将其加入您的列表。而不是 List 使用 List.
      猜你喜欢
      • 1970-01-01
      • 2022-06-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-19
      相关资源
      最近更新 更多