对于某个集合,我们需要对其按对象不同属性进行排序,对于在查询数据时遇到这样的情况,一些sql语句就能解决,当然我们也可以把数据查出来自己经过循环判断之后也能实现,今天这里介绍一种比较简单的方法,在定义对象时,只需要实现IComparable接口,去重写一下里面的CompareTo方法就可以了,如果希望有更强大的功能,可以参考我以前写的http://zxlyecf2.iteye.com/blog/1977948;对于习惯使用Linq的实现起来就跟简单了
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace CustomListTest.Students { public class Student : IComparable<Student> { public Student(string n, string g, int i) { name = n; gender = g; id = i; } public string name { get; set; } public string gender { get; set; } public int id { get; set; } public int CompareTo(Student other) { //name降序,id升序,若要改变顺序只需修改一下other.name和name的前后顺序 if (other.name.CompareTo(name) == 0) { return id.CompareTo(other.id); } else { return other.name.CompareTo(name); } } } }
Student songchao = new Student("SongChao", "Man", 100150); Student wuxing = new Student("WuXing", "Women", 100121); Student songchao2 = new Student("SongChao", "Women", 100130); Student aa = new Student("aa", "Women", 100133); Student aa2 = new Student("aa", "Women", 100130); List<Student> students = new List<Student>(); students.Add(songchao); students.Add(wuxing); students.Add(songchao2); students.Add(aa); students.Add(aa2); foreach (Student student in students) { Console.WriteLine("Name " + student.name + " ID " + student.id); } Console.WriteLine(""); students.Sort(); foreach (Student student in students) { Console.WriteLine("Name " + student.name + " ID " + student.id); } ////使用Linq更简单实现 //var ss = from u in students orderby u.name descending, u.id ascending select u; //foreach (Student student in ss) //{ // Console.WriteLine("Name " + student.name + " ID " + student.id); //} Console.Read();
相关推荐
在开发中,我们可能会遇到,我们会根据不同情况对一个List集合进行排序操作,为了方便List集合根据对象中的某一个属性进行排序,开发了此工具类:
对集合中的对象进行排序,例如:List中存放了User对象,则可根据User对象的某一个属性进行顺序or倒序的排序
根据对象一个或多个属性将对象进行综合排序,可进行逆序,也可进行顺排序,若第一个属性相同,则进行第二个属性进行排序,最好得到最后的结果
对List集合中 对象属性排序,不需要在每个实体类中重写Sort方法,实现了代码的重用。非常好用的Util类
java版本List中对象多属性排序.rar
主要介绍了Java实现储存对象并按对象某属性排序的几种方法,结合实例形式详细分析了Java储存对象并按对象某属性排序的具体实现方法与操作注意事项,需要的朋友可以参考下
下面小编就为大家带来一篇List集合对象中按照不同属性大小排序的实例。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
什么这是通过在用户个人资料上存储一个对象数组来实现的,每个对象都有一个ID引用,该ID引用了我们想要的另一个集合中的文档,以及一个索引属性,该属性在通过拖放重新排序时会更新。 然后,我们使用查询中的ID列表...
将学生对象放入一个集合,通过重写学生类的hashcode与equals方法,以及通过collections工具类调用实现caparator接口类的专门比较器及方法,对存放学生的集合进行多属性排序
java中按找对象的某个属性进行升序降序的排序
前段时间跟公司前端对接的时候,一个简单的数据库查询,但是前端说将结果按某个属性分组,每组单独一个集合,集合第一个元素为该属性,第二个元素为该属性值相同的所有对象集合,由于是小白一个,这个数据整理也是花...
下面小编就为大家分享一篇java根据List内对象的属性排序方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
主要介绍了java ArrayList集合中的某个对象属性进行排序的实现代码,需要的朋友可以参考下
Ilist接口:定义了利用索引访问集合对象的方法,还继承了ICollection和IEnumerable接口,除实现了接口原有的方法成员外,其本身也定义多个专门的方法成员,例如新增、移除、在指定位置插入元素或是返回特定元素在...
Sifter是一个客户端和服务器端库(通过 ),用于按属性(或多个属性)对对象的数组和哈希进行文本搜索。 专为自动完成而设计。 该过程分为三个步骤:评分,过滤,排序。 支持díåcritîçs。 例如,如果搜索...
按位取非运算符 对一个表达式执行按位取非(求非)操作。 按位或运算符 (|) 对两个表达式指定按位或操作。 按位右移运算符 (>>) 将一个表达式的各位向右移,保持符号不变。 按位异或运算符(^) 对两个表达式...
按位取非运算符 对一个表达式执行按位取非(求非)操作。 按位或运算符 (|) 对两个表达式指定按位或操作。 按位右移运算符 (>>) 将一个表达式的各位向右移,保持符号不变。 按位异或运算符(^) 对两个表达式...
按位取非运算符 对一个表达式执行按位取非(求非)操作。 按位或运算符 (|) 对两个表达式指定按位或操作。 按位右移运算符 (>>) 将一个表达式的各位向右移,保持符号不变。 按位异或运算符(^) 对两个表达式...
* 方法: public PockerCard() //无参构造函数: 创建牌的集合、创建两个角色对象 * public void initializeCard() //创建整幅扑克牌 * public void showCard() //显示单支牌的花色和点数 * public void ...
您可以使用一个配置文件(通常是XML),在上面定义好对象的名称、如何产生(Prototype 方式或Singleton 方式)、哪个对象产生之后必须设定成为某个对象的属性等,在启动容器之后,所有的对象都可以直接取用,不用...