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; } }