2

如何在 Java 和 Objective-C 的 TotallyLazy 库中使用“唯一”方法?

我有以下代码,但我无法完成它,因为我不确定应该如何组合传递给“唯一”的 Callable1 实例。这是我到目前为止所拥有的:

        seq
        .sort(new Comparator<T>() {
            @Override
            public int compare(
                final T pt1,
                final T pt2
            ) {
                return pt1.compareTo(pt2);
            }
        })
        .unique(new Callable1<T,T>() {
            @Override
            public T call(final T pt) throws Exception {
                final int result = pt.compareTo(..?);
                return result != 0;
            }});

如您所见,我可以成功排序,但是当涉及到 'unique' 调用中的“result = ...”时,我应该放什么?

4

1 回答 1

4

首先,对于排序,您可能应该使用提供的比较器之一:

seq.sort(Comparators.<T>ascending());

unique如果唯一性是基于整个 T 的相等性,那么你可以不带任何参数。的重载unique允许人们根据 的某些属性获得唯一的序列T

例如,如果你有一个Sequence<User>,你可以说我希望他们根据他们的firstName领域是独一无二的:

class User { 
    String firstName, lastName; 
    User(...){...} // Constructor
}

sequence(new User("Chris", "Nash")).unique(user -> user.firstName) 

TotallyLazy 有大量的测试来记录特性,但首先要开始的地方总是SequenceTest或查看整个测试包以获取更多示例。

于 2014-09-08T19:03:48.987 回答