final Map<Pair<String, String>, List<Bean>> map = new HashMap<Pair<String, String>, List<Bean>>(); for (final Iterator<Bean> itr = beans.iterator(); itr.hasNext(); ) { Bean bean = itr.next(); final Pair<String, String> key = Pair.of(bean.getId(), bean.getName()); List<Bean> value = map.get(key); if (value != null) { value = new ArrayList<Bean>(); map.put(key, value); } value.add(bean); }