Сравните две коллекции Java, используя Comparator вместо equals ()

Постановка задачи

У меня есть две коллекции одного типа объектов, которые я хочу сравнить. В этом случае я хочу сравнить их на основе атрибута, который не учитываетequals() для объектов. В моем примере яm используя ранжированные коллекции Имен, например:

public class Name {
    private String name;
    private int weightedRank;

    //getters & setters

    @Override
    public boolean equals(Object obj) {
        return this.name.equals(obj.name); //Naive implementation just to show
                                           //equals is based on the name field.
    }
}

Я хочу сравнить две коллекции, чтобы утверждать, что для позицииi в каждой коллекцииweightedRank каждого имени в этой позиции одинаковое значение. Я немного погуглил, но неt найти подходящий метод в Commons Collections или любом другом API, поэтому я придумал следующее:

public  boolean comparatorEquals(Collection col1, Collection col2,
        Comparator c)
{
    if (col1 == null)
        return col2 == null;
    if (col2 == null) 
        return false;

    if (col1.size() != col2.size())
        return false;

    Iterator i1 = col1.iterator(), i2 = col2.iterator();

    while(i1.hasNext() && i2.hasNext()) {
        if (c.compare(i1.next(), i2.next()) != 0) {
            return false;
        }
    }

    return true;
}
Вопрос

Есть ли другой способ сделать это? Я пропустил очевидный метод из коллекций Commons?

связанные с

Я тоже заметилаэтот вопрос на SO, который похож, хотя в этом случае яЯ думаю, что наиважнейшийequals() имеет немного больше смысла.

редактировать

Нечто похожее на это войдет в релизКоллекции Apache Commons в ближайшее время (на момент написания статьи). Увидетьhttps://issues.apache.org/jira/browse/COLLECTIONS-446.

Ответы на вопрос(4)

Ваш ответ на вопрос