集合之间的复制顺序

Ill*_*huk 0 java sorting collections

在我的应用程序中,我需要按照请求的顺序保持结果集合(用户发送他想要的列表,并且希望以相同的顺序回答他).

数据,我将发送给用户的内容由底层图层生成,它们既不知道正确的顺序,也不生成有序的结果.所以我必须自己订购.

我的方法是遵循,但我认为没有必要实现它,因为应该有一些标准的方法.那么,你会推荐什么?

public class KeepOrder {

/**
 * Knows how to extract A from B.
 * 
 * @param <A>
 * @param <B>
 */
public interface Extractor<A, B> {

    A extract(B from);

}

@SuppressWarnings("serial")
public static <T, F> Collection<T> keepOrder(final Collection<T> data, final Collection<F> order,
        final Extractor<F, T> extractor) {

    final Comparator<T> tComparator = new Comparator<T>() {

        @Override
        public int compare(final T o1, final T o2) {

            final F field1 = extractor.extract(o1);
            final F field2 = extractor.extract(o2);

            for (final F currentField : order) {
                if (currentField.equals(field1) && currentField.equals(field2)) {
                    return 0;
                }

                if (currentField.equals(field1)) {
                    return -1;
                }

                if (currentField.equals(field2)) {
                    return 1;
                }
            }

            return 0;
        }
    };

    return new TreeSet<T>(tComparator) {
        {
            addAll(data);
        }
    };

}
Run Code Online (Sandbox Code Playgroud)

}

aio*_*obe 5

如果订单在您的收藏中很重要,您应该将自己限制为Lists.

来自以下文件List:

有序集合(也称为序列).该接口的用户可以精确控制列表中每个元素的插入位置.用户可以通过整数索引(列表中的位置)访问元素,并搜索列表中的元素.