高分悬赏:Java语言将数组中的偶数和奇数分别放入2个不同的数组,其中偶数是升序排列,奇数是降序排序

高分悬赏:Java语言将数组中的偶数和奇数分别放入2个不同的数组,其中偶数是升序排列,奇数是降序排序

算法思路:

0、定义两个集合对象 list1、list2
1、遍历数组,是奇数放入list1,偶数加入 list2
2、使用集合工具类对 list1 和 list2 排序并输出。

提前排好序,后续只需要判断奇偶数就可以了:
List ins = new ArrayList<>();
List int1 = new ArrayList<>();
List int2 = new ArrayList<>();

    Random r = new Random(1);
    for (int i = 10 ;i > 0 ; i --) {
        ins.add(r.nextInt(100));
    }
    Collections.sort(ins);//排序 小-->大

    for (Integer in : ins) {
        if(in%2 == 0) {
            int2.add(in);
        }else {
            int1.add(0, in);
        }
    }

    System.out.println(ins);
    System.out.println(int1);
    System.out.println(int2);

可以用stream流来处理,先排序(排序可以一步到位奇数在前升序偶数在后降序)后分组,或者分完组后再排序也可以
for example

public class Sample {
    public static void main(String[] args) {
        try {
            List<Integer> list = new ArrayList<>(Arrays.asList(new Integer[] {9,3,2,4,5,1,6,7,8,0})); //测试数据
        //排序:同为奇数则顺序,同为偶数则反序,奇偶不同则奇在前偶在后,分组:按奇偶分组
            Map<Integer, List<Integer>> map = list.stream().sorted((m,n)->
                ((m%2==n%2) ? (m%2==0 ? n.compareTo(m) : m.compareTo(n)) : (n%2==0&&m%2==1 ? -1 : 1))).collect(Collectors.groupingBy((m)->m%2));
            for (List<Integer> l : map.values()) {
                System.out.println(l);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}