2017-12-05 7 views
2

この質問はthisの拡張です。私はここに必要なすべての詳細を提供しました。あるオブジェクトの反復の結果を別のオブジェクトの値を持つマップに集める

私は2つのコレクションを持っている場合は、

List<String> domainArr; 
List<Person> personArr; 

私は、文字列の各要素にマイナーな変換を行い、その後、私が持っている

List<String> urlArr = strArr.stream() 
    .map(str -> "https://" + strArr) 
    .collect(Collectors.toList()); 

にpersonArrを反復したいと思いますメソッドのように

List<Person> getPersons(String url){ 
/*makes a restful call to the url and gets a List of objects for each URL.*/ 
} 

私が知っているからhere私は

strArr.stream() 
    .map(str -> getPersons("https://" + str)) 
    .flatMap(persons -> persons.stream()) 
    .filter(Objects::nonNull) 
    .map(Person::getName) 
    .filter(Objects::nonNull) 
    .collect(Collectors.toList()); 

のような平坦化されたリストにsultsは、私がどのように特定のURLの結果を変換して得られた名前のリストとしてdomainUrlと値としてキーで地図で結果を得る不思議でしたか?

resultMapがあるあなたは以下のコードを使用することができます

URL1 -> [name1, name2] 
URL2 -> [name3, name4] 
+1

「domainArr」と「strArray」は同じですか?あなたはどのタイプの地図を保持したいのですか? – user1803551

答えて

-1

マップなどは、あなたが探しているものを言う:

domainArr.stream() 
      .forEach(domain -> { 
       String url = "https://" + domain; 
       List<Person> persons = getPersons(url); 
       Map<String, List<String>> resultMap = persons.stream() 
         .filter(Objects::nonNull) 
         .map(Person::getName) 
         .filter(Objects::nonNull) 
         .collect(Collectors.toMap(a -> url, Arrays::asList, (a, b) -> { 
          a.addAll(b); 
          return a; 
         })); 

      }); 
4

は読みやすくするために、あなたは別のメソッドを定義することができますURLの名前のリストを抽出します。

List<String> personNames(String url) { 
    return getPersons(url).stream() 
      .filter(Objects::nonNull) // why would you return null persons? 
      .map(Person::getName) 
      .filter(Objects::nonNull) // why would... nevermind! :) 
      .collect(Collectors.toList()); 
} 

次にあなたが書くことができます。

strArr.stream() 
     .map("https://"::concat) // Your code here says `.map(str -> "https://" + strArr)`, which I suppose should be `.map(str -> "https://" + str)` 
     .collect(Collectors.toMap(Function.identity(), this::personNames)); 
関連する問題