對list進行多欄位排序

2021-07-04 20:10:32 字數 1338 閱讀 4846

public class multicompare implements comparator

//如果多個欄位的排序方向不全一致,可用此方式,格式固定為:field1_1、field2_-1

public multicompare(string... fields)

//重寫compare方法

@override

public int compare(object o1, object o2)

}object value1 = invokemethod(field, o1);

object value2 = invokemethod(field, o2);

if(value1 == null)value1 = "";

if(value2 == null)value2 = "";

string v1 = string.valueof(value1.tostring());

string v2 = string.valueof(value2.tostring());

if (v1.equals(v2))

continue;

if (sort == 1) else if (sort == -1) else

} catch (numberformatexception e)

} return result; }

//根據屬性名,獲取對應的get方法的值

private static object invokemethod(string propertiesname, object object)

string methodname = "get"

+ getmethodname(propertiesname.substring(0,

propertiesname.indexof(".")));

method method = object.getclass().getmethod(methodname);

return invokemethod(

propertiesname.substring(propertiesname.indexof(".") + 1),

method.invoke(object));

} catch (exception e)

} //將欄位名的首字母轉為大寫

private static string getmethodname(string fieldname)

}

使用方式如下:

public static void main(string args)

對list根據某個字段進行排序

今天敲 遇到乙個問題 需要對list的某個字段進行排序,而且需要根據自己定義的順序進行排序 我的需求中根據index實體類的indextype欄位進行排序,順序為 b,d,c,a string 我的indextype欄位為string型別,陣列中為我自定義的順序 用的常量 new fixedorde...

對List物件進行排序

最近遇到需要對 list 物件按照某一引數 string型別 進行排序的問題,網上教的大多是自己寫排序方法或者用collections.sort 方法按照某一int型引數進行排序,找了好久找到一種很方便快捷的排序方法。對systemdatelist按systemtype進行排序 systemdate...

linux sort 多欄位排序

linux多數發行版自帶的sort程式,非常強大,在此只說多字段排序 sort 有個引數 k,可以指定字段,有比較複雜的語法,不在文字範圍內。一下為一段資料 從基因中得到,僅僅作為demo 檔名為 data chr13 3008566 3008677 chr9 3024384 3024515 chr...