混合数组怎么仅仅对某种类型的数据排序,排序结果还是要保持别的类型的数据的顺序?

混合数组怎么仅仅对某种类型的数据排序,排序结果还是要保持别的类型的数据的顺序?怎么仅对数组的某类型排序?

http://blog.csdn.net/w_sx_/article/details/38474515

这种需求倒是很奇怪……
要我说的话,自己写一个排序类吧。

就照着那个排序算法,把该替换的替换了就行。
最简单的选择法:

 public class TestA {

    public static void main(String[] args) throws Exception {
        Object[] objects = new Object[] { "1", 15, new TestA(), 123L, 1.5, 3, 100, 2 };
        for (Object obj : objects) {
            System.out.print(obj);
            System.out.print(" - ");
        }
        System.out.println();
        new TestA().sort(objects, Integer.class, (a, b) -> {
            return a.compareTo(b);
        });
        for (Object obj : objects) {
            System.out.print(obj);
            System.out.print(" - ");
        }

    }

    private <T> void sort(Object[] objects, Class<T> clazz, Comparator<T> cp) {
        Object sortObject;
        for (int i = 0; i < objects.length; i++) {
            if (!clazz.isAssignableFrom(objects[i].getClass())) {
                continue;
            }
            sortObject = objects[i];
            int sortIndex = i;
            for (int j = i; j < objects.length; j++) {
                if (!clazz.isAssignableFrom(objects[j].getClass())) {
                    continue;
                }
                // 正向排序、逆向排序,就是这里等于1还是等于-1
                if (1 == cp.compare(clazz.cast(sortObject), clazz.cast(objects[j]))) {
                    sortObject = objects[sortIndex = j];
                }
            }
            objects[sortIndex] = objects[i];
            objects[i] = sortObject;
        }
    }

}

代码实现的很简陋,复杂度奇高,当然可以进行优化。