Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
{ name: "", val: "" } и нужно оставить только объекты с уникальными name. Multiset<String> names = ImmutableMultiset.copyOf(Iterables.transform(pairs, Pair::getName));
result = Iterables.filter(pairs, pair -> names.count(pair.getName()) == 1);
def items = [
[name: 'a', val: 4],
[name: 'a', val: 5],
[name: 'b', val: 6],
[name: 'a', val: 7],
[name: 'b', val: 3]
]
def expected = [
[name: 'a', val: 4],
[name: 'b', val: 6],
]
def result = items.groupBy { it.name }.collect { it.value.first() }
assert expected == result
items = [
{'name':'a', 'val':4},
{'name':'a', 'val':5},
{'name':'b', 'val':6},
{'name':'a', 'val':7},
{'name':'b', 'val':3}
]
expected = [
{'name':'a', 'val':4},
{'name':'b', 'val':6},
]
result = []
for item in items:
if item['name'] in [r['name'] for r in result]:
continue
result.append(item)
assert expected == result
final Collection<Obj> result = items.stream().collect(Collectors.toMap(Obj::getName, v -> v, (v0, v1) -> v0)).values();List<Obj> items = Arrays.asList(
Obj.of("a", 4),
Obj.of("a", 5),
Obj.of("b", 6),
Obj.of("a", 7),
Obj.of("b", 3));
toMap создавал LinkedHashMap, иначе элементы в произвольном порядке возвращаютсяitems.stream().collect(
Collectors.toMap(item -> item.get("name"), v -> v, (v0, v1) -> v0, LinkedHashMap::new)
).values();
case class Person(lastName: String,
middleName: String,
firstName: String,
zipCode: String) extends Ordered[Person] {
import scala.math.Ordered.orderingToOrdered
def compare(that: Person) =
(this.lastName, this.middleName, this.firstName, this.zipCode) compare
(that.lastName, that.middleName, that.firstName, that.zipCode)
}
Чистый код с Google Guava