如何对List 进行排序

如题所述

第一种:实体类实现IComparable接口,而且必须实现CompareTo方法
class Info:IComparable
{
public int Id { get; set; }
public string Name { get; set; }

public int CompareTo(object obj) {
int result;
try
{
Info info = obj as Info;
if (this.Id > info.Id)
{
result = 0;
}
else
result = 1;
return result;
}
catch (Exception ex) { throw new Exception(ex.Message); }
}
}
调用方式如下,只需要用sort方法就能实现对list进行排序。
private static void ReadAccordingCompare() {
List<Info> infoList = new List<Info>();
infoList.Add(
new Info() { Id = 1, Name = "abc" });
infoList.Add(new Info() { Id = 3, Name = "rose" });
infoList.Add(new Info() { Id = 2, Name = "woft" });
infoList.Sort();
foreach (var item in infoList)
{
Console.WriteLine(item.Id + ":" + item.Name);
}
}
第二种方法:linq to list进行排序
运用linq实现对list排序,在实体类定义的时候就不需用实现IComparable接口,调用方式如下:
private static void ReadT(string str) {
List<Info> infoList = new List<Info>();
infoList.Add(
new Info() { Id = 1, Name = "woft" });
infoList.Add(new Info() { Id=3,Name="rose"});
infoList.Add(new Info() { Id = 2, Name = "abc" });
Console.WriteLine("ReadT*********************");
IEnumerable<Info> query = null;
query = from items in infoList orderby items.Id select items;
foreach (var item in query)
{
Console.WriteLine(item.Id+":"+item.Name);
}
}
但是上面两种方式都只能对一个实体属性排序,如果对不同的属性排序的话只能写很多的if进行判断,这样显得很麻烦。且看下面的方式实现根据传入参数进行排序。
private static void ListSort(string field,string rule)
{
if (!string.IsNullOrEmpty(rule)&&(!rule.ToLower().Equals("desc")||!rule.ToLower().Equals("asc")))
{
try
{
List<Info> infoList = GetList();
infoList.Sort(
delegate(Info info1, Info info2)
{
Type t1 = info1.GetType();
Type t2 = info2.GetType();
PropertyInfo pro1 = t1.GetProperty(field);
PropertyInfo pro2 = t2.GetProperty(field);
return rule.ToLower().Equals("asc") ?
pro1.GetValue(info1, null).ToString().CompareTo(pro2.GetValue(info2, null).ToString()) :
pro2.GetValue(info2, null).ToString().CompareTo(pro1.GetValue(info1, null).ToString());
});
Console.WriteLine("*****ListSort**********");
foreach (var item in infoList)
{
Console.WriteLine(item.Id + "," + item.Name);
}
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
} Console.WriteLine("ruls is wrong");

}
调用方式:
ListSort("Name","desc");//表示对Name进行desc排序
ListSort("Id","asc");//表示对Id进行asc排序。如此如果参数很多的话减少了很多判断。
温馨提示:内容为网友见解,仅供参考
第1个回答  2018-01-28
我想你要的应该是这样的。
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class Test_list_order {
public static void main(String[] args) {
List<Integer> list = new ArrayList<Integer>();
list.add(1);
list.add(4);
list.add(9);
list.add(3);
list.add(2);
list.add(11);
Collections.sort(list);
for (Integer i : list) {
System.out.println(i);
}
}
}本回答被网友采纳

如何对list排序
对list排序的方法主要有两种:使用Python内置函数sort和使用sorted函数。以下是详细的解释:一、使用sort函数 sort是Python列表的一个内置方法,它会对原列表进行排序,排序后的结果会替代原列表。sort方法默认进行的是升序排序。示例代码:python lst = [3, 1, 4, 1, 5, 9, 2, 6]lst.sort print ...

list如何排序
1、首先我们定义一个list,然后里面存储一些字符串,然后循环输出,这时候就是list默认的排序 2、如果我们想要对其进行排序,可以采用Collections类中的排序方法,Collections.sort(list):或者我们可以采用Collections.reverse(list)对集合进行倒序排列,如果上面的排序都不能满足我们的要求呢,那么我们还可以采用...

java如何让list按照list里面的某个字段排序,list里面的有很..._百度...
1. 使用Collections.sort方法或List的sort方法:Java提供了对List进行排序的功能,可以通过Collections.sort方法或List自身的sort方法实现。这些方法可以根据元素的自然顺序或者通过传递一个Comparator对象来自定义排序规则。2. 自定义Comparator实现:如果要按照List中的某个字段进行排序,需要创建一个实现了Compara...

python list排序的两种方法及实例讲解
实例1:正向排序 实例2:反向排序 实例3:根据List item的第二个关键字排序 实例4:根据List item的第二个关键字排序 实例5:根据List item的第二个关键字排序 实例6:使用装饰-排序-再装饰(DSU方法)对List进行排序 通过上述实例,我们可以看到共有6种方法可以对List进行排序,其中实例3、4、5、6...

pythonlist怎么排序
一、使用sort方法进行排序 `sort`方法是Python列表的一个内置方法,可以直接对列表进行排序。它会改变原来的列表,使其按照特定的顺序排列。默认情况下,`sort`方法按照升序排列列表中的元素。示例:python lst = [3, 1, 4, 1, 5, 9, 2]lst.sort print # 输出:[1, 1, 2, 3, 4, 5, ...

java怎么将List里面数据排序
1. 创建一个比较器类,实现Comparator接口。2. 在比较器类中实现compare方法,用于比较学生实体的姓名和年龄。3. 使用List类的sort(Comparator c)方法或Collections工具类的sort(List list, Comparator c)方法对列表进行排序。以上两种方法都可以实现对学生列表的排序,第一种方法是直接在实体类中实现比较...

python要如何实现(列表)排序?
使用sorted()函数,可对list进行排序,返回一个新列表,按元素从小到大排列。而list.sort()方法则直接在原列表中排序,改变原列表顺序,也是从小到大。在sorted()与list.sort()中,可通过指定参数实现自定义排序。如可调用reverse参数,反转排序顺序,由小变大变为由大变小。key参数则允许指定排序规则...

软件测试|Python如何将列表从大到小排序
1. sorted()函数Python的sorted()函数能对列表进行排序,通过设置reverse=True参数,可以轻松实现降序排列。2. list.sort()方法list.sort()方法同样适用于列表,只需设置reverse=True,即可在原列表上进行降序排序,无需返回新列表。3. 自定义比较函数若需根据自定义逻辑排序,可利用sorted()的key参数,...

零基础学python_08_列表(排序+反转+长度)
在编程世界中,Python以其简洁易懂的语法和强大的功能,成为了学习编程的首选语言。尤其在处理数据时,列表(list)作为基础数据结构之一,其操作功能丰富多样。本文将带你探索如何对Python列表进行排序、反转以及获取长度,这些技巧将为你的编程之旅增添实用技能。排序列表 在你创建的列表中,元素的排列顺序...

Python 排序列表——如何按降序或升序排序
1. sort() 方法:此方法接收一个列表,按默认升序进行排序。例如,对于数字列表:python my_list = [5, 2, 8, 1]my_list.sort() # 对my_list进行本地排序,返回None print(my_list) # 输出: [1, 2, 5, 8]要实现降序排序,需传入 reverse=True 参数:python my_list.sort(reverse=...

相似回答