高分悬赏: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();
}
}
}