Группирование элементов списка в подсписки (возможно, с помощью гуавы)

Я хочу сгруппировать элементы список. В настоящее время я делаю это следующим образом:

public static <E> List<List<E>> group(final List<E> list, final GroupFunction<E> groupFunction) {

    List<List<E>> result = Lists.newArrayList();

    for (final E element : list) {

        boolean groupFound = false;
        for (final List<E> group : result) {
            if (groupFunction.sameGroup(element, group.get(0))) {
                group.add(element);
                groupFound = true;
                break;
            }
        }
        if (! groupFound) {

            List<E> newGroup = Lists.newArrayList();
            newGroup.add(element);
            result.add(newGroup);
        }
    }

    return result;
}

public interface GroupFunction<E> {
    public boolean sameGroup(final E element1, final E element2);
}

Есть ли лучший способ сделать это, предпочтительно используя гуаву?

36
задан ekad 10 May 2017 в 02:04
поделиться