package org.xiaozhu.test; import java.util.ArrayList; import java.util.Collections; import java.util.List; public class MyTest { public static void main(String[] args) { List<Object> list = new ArrayList<Object>(); list.add(3); list.add(1); list.add(9); list.add(8); list.add(4); list.add(6); list.add(2); list.add("c"); list.add("f"); list.add("a"); list.add("h"); list.add("d"); // 排序结果 应为 1 3 9 2 4 6 8 a c d f h List<Object> result = sortByComplex(list); // 打印结果 for (Object object : result) { System.out.println(object.toString()); } } public static List<Object> sortByComplex(List<Object> list){ // 存放数字 List<Integer> number = new ArrayList<Integer>(); // 存放奇数字 List<Object> odd = new ArrayList<Object>(); // 存放偶数 List<Integer> even = new ArrayList<Integer>(); // 存在字母 List<String> letter = new ArrayList<String>(); // 将字母数字分别存放在对应集合 for (Object obj : list) { if (obj.toString().matches("^\\d$")) { // 将数字放在number集合中 number.add(Integer.parseInt(obj.toString())); Collections.sort(number); }else if (obj.toString().matches("^\\w$")) { letter.add(obj.toString()); // 对字母排序 Collections.sort(letter); } } // 处理数字number for (Integer integer : number) { if (integer %2 !=0) { // 奇数 odd.add(integer); }else{ even.add(integer); } } // 将偶数加到 for (Integer integer : even) { odd.add(integer); } // 将字母加到偶数后面 for (String string : letter) { odd.add(string); } return odd; } }