㈠ java 中 List<T>如何按照T中的一個欄位排序
可以通過以下工具類進行實現:
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
/**
 *  List按照指定欄位排序工具類
 *
 * @param <T>
 */
public class ListSortUtil<T> {
 /**
  * @param targetList 目標排序List
  * @param sortField 排序欄位(實體類屬性名)
  * @param sortMode 排序方式(asc or  desc)
  */
 @SuppressWarnings({ "unchecked", "rawtypes" })
 public void sort(List<T> targetList, final String sortField, final String sortMode) {
 
  Collections.sort(targetList, new Comparator() {
   public int compare(Object obj1, Object obj2) { 
    int retVal = 0;
    try {
     //首字母轉大寫
     String newStr=sortField.substring(0, 1).toUpperCase()+sortField.replaceFirst("\\w",""); 
     String methodStr="get"+newStr;
     
     Method method1 = ((T)obj1).getClass().getMethod(methodStr, null);
     Method method2 = ((T)obj2).getClass().getMethod(methodStr, null);
     if (sortMode != null && "desc".equals(sortMode)) {
      retVal = method2.invoke(((T) obj2), null).toString().compareTo(method1.invoke(((T) obj1), null).toString()); // 倒序
     } else {
      retVal = method1.invoke(((T) obj1), null).toString().compareTo(method2.invoke(((T) obj2), null).toString()); // 正序
     }
    } catch (Exception e) {
     throw new RuntimeException();
    }
    return retVal;
   }
  });
 }
 
}
 	Collections.sort(list.);//升序
㈡ java 比較兩個list數組問題
我這有種解法:
1、將list1和list2進行合並,在合並過程中去重。
2、用Collections.sort()進行排序就行了。代碼如下:
 List<Integer> list  = new ArrayList<Integer>();
 for (Integer i : list2) {
  if (list.indexOf(i) == -1) {
   list.add(i);
  }
 }
 for (Integer i : list1) {
  if (list.indexOf(i) == -1) {
   list.add(i);
  }
 }
 Collections.sort(list);
㈢ java 實現ArrayList的sort
在排序中,最重要的是自己實現自己的比較的行數,即是implements Comparator
實現方法	public int compare(Object o1, Object o2) 最為重要..
舉個例子:
package book.arrayset;
import java.util.Comparator;
/**
* 整數比較器,將整數按降序排列
*/
class MyIntComparator implements Comparator{
/**
* o1比o2大,返回-1;o1比o2小,返回1。
*/
public int compare(Object o1, Object o2) {
int i1 = ((Integer)o1).intValue();
int i2 = ((Integer)o2).intValue();
if (i1 < i2){
return 1;
}
if (i1 > i2){
return -1;
}
return 0;
}
}
//上面的為比較的函數實現,下面真正的添加數據,
//通過調用上面的比較函數實現自定義排序的功能
package book.arrayset;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
/**
* 對List中的元素排序
*/
public class SortList {
public static void output(List list){
if (list == null){
return;
}
for (int i=0; i<list.size(); i++){
System.out.print(list.get(i).toString() + " ");
}
System.out.println();
}
public static void main(String[] args) {
List list = new ArrayList();
list.add(new Integer(5));
list.add(new Integer(8));
list.add(new Integer(1));
list.add(new Integer(3));
list.add(new Integer(2));
list.add(new Double(3.1));
System.out.println("list開始狀態");
SortList.output(list);
//Collections.sort方法將用默認比較器排列list的元素
Collections.sort(list);
System.out.println("list被默認比較器排序後的狀態");
SortList.output(list);
//下面將list的元素按降序排列
Collections.sort(list, new MyIntComparator());
System.out.println("list被自定義比較器排序後的狀態");
SortList.output(list);
//因此,對於任意自定義類的對象,當保存在集合類容器中後,如果需要對它們進行排序,
//需要自己提供適應於自定義類的比較器,自定義比較器必須實現Comparator介面。
//然後採用Collections.sort(list, comparator);方法對容器進行排序。
}
}
㈣ JAVA中如何使用SORT從大到小排.
在排序中,最重要的是自己實現自己的比較的行數,即是implements Comparator
實現方法	public int compare(Object o1, Object o2) 最為重要..
舉個例子:
package book.arrayset;
import java.util.Comparator;
/**
 * 整數比較器,將整數按降序排列
 */
class MyIntComparator implements Comparator{
	/**
	 * o1比o2大,返回-1;o1比o2小,返回1。
	 */
	public int compare(Object o1, Object o2) {
		int i1 = ((Integer)o1).intValue();
		int i2 = ((Integer)o2).intValue();
		if (i1 < i2){
			return 1;
		}
		if (i1 > i2){
			return -1;
		}
		return 0;
	}
}
//上面的為比較的函數實現,下面真正的添加數據,
//通過調用上面的比較函數實現自定義排序的功能
package book.arrayset;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
/**
 * 對List中的元素排序
 */
public class SortList {
	
	public static void output(List list){
		if (list == null){
			return;
		}
		for (int i=0; i<list.size(); i++){
			System.out.print(list.get(i).toString() + " ");
		}
		System.out.println();
	}
	
	public static void main(String[] args) {
		List list = new ArrayList();
		list.add(new Integer(5));
		list.add(new Integer(8));
		list.add(new Integer(1));
		list.add(new Integer(3));
		list.add(new Integer(2));
		list.add(new Double(3.1));
		System.out.println("list開始狀態");
		SortList.output(list);
		//Collections.sort方法將用默認比較器排列list的元素
		Collections.sort(list);
		System.out.println("list被默認比較器排序後的狀態");
		SortList.output(list);
		//下面將list的元素按降序排列
		Collections.sort(list, new MyIntComparator());
		System.out.println("list被自定義比較器排序後的狀態");
		SortList.output(list);
		
		//因此,對於任意自定義類的對象,當保存在集合類容器中後,如果需要對它們進行排序,
		//需要自己提供適應於自定義類的比較器,自定義比較器必須實現Comparator介面。
		//然後採用Collections.sort(list, comparator);方法對容器進行排序。
	}
}
㈤ 文件的讀取與輸出並排序 Java編程
參數裡面的isAscend 用來決定是升序排列 還是降序排列: 
/***
	* 按最後修改時間排序
	* @param list
	* @param isAscend
	*/
	public static void sortListByTime(List<FileInfo> list , boolean isAscend) {
		// 對ListView中數據list排序
		ComparatorByTime comparator = new ComparatorByTime(isAscend);
		if (!list.isEmpty()) {
			Log.e("sortListByTime()", "");
			synchronized (list) {
				Collections.sort(list, comparator);
			}
		}
	}
	/**
	* 按文件大小排序
	* @param list
	*/
	public static void sortListBySize(List<FileInfo> list , boolean isAscend) {
		// 對ListView中數據list排序
		ComparatorBySize comparator = new ComparatorBySize(isAscend);
		if (!list.isEmpty()) {
			Log.e("sortListBySize()", "");
			synchronized (list) {
				Collections.sort(list, comparator);
			}
			
		}
	}
	/**
	* 按文件名稱排序
	* @param list
	*/
	public static void sortListByName(List<FileInfo> list , boolean isAscend) {
		// 對ListView中數據list排序
		ComparatorByName comparator = new ComparatorByName(isAscend);
		if (!list.isEmpty()) {
			Log.e("sortListByName()", "");
			synchronized (list) {
				Collections.sort(list, comparator);
			}
			
		}
	}
㈥ JAVA如何根據List中對象的屬性進行對象排序(江湖救急!)
最近這么多人問排序的問題啊,都快回答膩了,你可以先搜一搜看看別的網站有沒有,不過既然都回答了,我就估且再發些代碼吧,這里只用String的List排序,如果用到復雜的對象你自己懂得變通吧
publicclassSortList{
	privatestaticDateFormatdf=newSimpleDateFormat("yyyy-MM-dd");
	publicstaticvoidmain(String[]args){
		List<String>dates=newArrayList<String>();
		dates.add("2014-10-02");
		dates.add("2013-12-01");
		dates.add("2014-11-02");
		dates.add("2014-01-05");
		
		Collections.sort(dates,newComparator<String>(){
			@Override
			publicintcompare(Stringo1,Stringo2){
				Dated1=null,d2=null;
				try{
					d1=df.parse(o1);
				}catch(ParseExceptione){
					e.printStackTrace();
				}
				try{
					d2=df.parse(o2);
				}catch(ParseExceptione){
					e.printStackTrace();
				}
				if(null==d1||null==d2){
					return0;
				}
				returnd1.compareTo(d2);
			}
		});
		System.out.println(dates);
	}
}