にUser._Idをマップ
にCard._Serialをマッピングするための最初の地図を使用しています私は、コードをテストしていないが、私は非常に楽観的それは動作します;-)
私は配列が気に入らないので、私はユーザーとカードのリストを入力として使用しました。
希望すると便利です。それのようなものがより凝縮した場合
public class CardToUserMapper {
public Map<String, User> mapCardsToUser(
final List<User> users,
final List<Card> cards) {
Map<Integer, User> idToUser =
users.stream()
.collect(Collectors.toMap(
u -> u.getId(),
u -> u));
Map<String, User> serialToUser =
cards.stream()
.collect(Collectors.toMap(
c -> c.getSerial(),
c -> idToUser.get(c.getUserId())));
return serialToUser;
}
}
、一つはこのようにそれを行うことができます。
public class CardToUserMapper {
public Map<String, User> mapCardsToUser(final List<User> users,
final List<Card> cards) {
return mapSerialToUser(cards, mapUserIdToUser(users));
}
private Map<String, User> mapSerialToUser(final List<Card> cards,
final Map<Integer, User> idToUser) {
return map(cards, c -> c.getSerial(), c -> idToUser.get(c.getUserId()));
}
private Map<Integer, User> mapUserIdToUser(final List<User> users) {
return map(users, u -> u.getId(), u -> u);
}
private <S, T, U> Map<T, U> map(final List<S> listOfS, final Function<S, T> funcStoT,
final Function<S, U> funcStoU) {
return listOfS.stream().collect(Collectors.toMap(funcStoT, funcStoU));
}
}
は、zip形式のリストの上にマッピングし、2つのリストをzip形式で圧縮します。私は90%のサイトJavaを持っています。 – Carcigenicate
[2つのArrayListsを同時に繰り返す方法は?](http://stackoverflow.com/questions/15985266/how-to-iterate-through-two-arraylists-同時) – Carcigenicate