精华内容
下载资源
问答
  • List排序

    万次阅读 2010-12-22 19:47:00
    在使用这些泛型集合时我们有时需要对其进行排序,下面我们就一块看一下List如何进行排序(像Dictionary也有其相应的排序方式,例如说使用Linq语法方式,今天暂且不说)。 主要内容: 初始工作 默认排序方式 通过...

    摘要:在面向对象开发过程中我们经常将一组对象放到一个特定集合中,此时我们通常使用泛型集合来存放,常见的如:List 、Dictionary等。在使用这些泛型集合时我们有时需要对其进行排序,下面我们就一块看一下List如何进行排序(像Dictionary也有其相应的排序方式,例如说使用Linq语法方式,今天暂且不说)。

    主要内容:

    1. 初始工作
    2. 默认排序方式
    3. 通过自定义比较器进行排序
    4. 设定排序范围
    5. 总结

    一、初始工作

    假设我们有一个Student对象,简单起见这个对象只有三个属性,分别是学好、姓名、年龄。

    我们有四个学生,分别存放在List中。

    很明显我们往students对象中加入学生的时候并没有顺序,下面我们就一起看一下如何对students集合按照年龄由小到大来排序。

    二、默认排序方式

    如果你查一下List的API的话,我们会看到对于List的Sort方法有四种重载,首先在这里我们说一下第一种,也就是无参数的情况:List.Sort () 。那么我能不能直接对students集合使用Sort()方法进行排序呢?答案是否定的,如果我们使用下面的方法排序的话系统将抛出System.InvalidOperationException异常。

    执行上面的代码将抛出如下异常

    从图中的提示我们可以看出错误原因是由于进行比较的对象并未有任何一个实现IComparable接口,因此也就无法完成排序。事实上对于无参Sort()方法是使用Comparer.Default比较器来排序的,而此比较器进行比较时首先就会检查T是否实现了IComparable泛型接口,如果实现了则使用该实现。否则将坚持是否实现了IComparable接口。如果均未实现则引发InvalidOperationException异常。也就是说如果想使用此方法需要实现ICompara泛型接口或者IComparable接口,因此我们暂且修改一下Student类,实现IComparable接口(除了这个例子职务后面的例子仍然使用第一步我们建立的Student类)。

    首先修改Student类,实现IComparable接口:

    然后我们再运行程序就会看到可以按照我们的想法去排序了。

    接着再使用Sort()排序的话就可以看到如下排序成功的界面:

    三、通过自定义比较器进行排序

    尽管我们上面说过可以使用Sort()方法排序,但是要求Student必须实现IComparable泛型接口或接口,那么我们有没有其他的方法呢?其实是有的,个人感觉这种方法多数情况下会更好一些。那就是:List.Sort (泛型 Comparison) List.Sort (泛型 IComparer) 方法。之所以将这两种重载放到一起来说,是因为二者在使用范围上很类似。首先看一下List.Sort (泛型 Comparison) 方法,此方法的参数是Comparison类型,其实是一个包含两个参数的委托,因此使用此方法,我们只需要定义一个委托,其两个参数均为Student类型,在委托实现的方法比较两个Student对象的Age属性即可。

    运行结果(注意此时以及下面的所有例子中Student均不需要实现IComparable泛型接口或接口):

     

    接着我们看一下List.Sort (泛型 IComparer) ,此方法需要一个泛型IComparer接口类型,因此只要定义一个类实现此接口然后再调用此方法即可。

    运行效果:

    四、设定排序范围

    虽然上面的方法都实现了泛型集合排序,但是有时我们并不需要对整个集合进行排序而是指对其中一定范围内容的对象进行排序,那么我们就需要使用Sort方法的第四种重载:List.Sort (Int32, Int32, 泛型 IComparer) 。前两个参数分别代表排序的其实位置和排序长度,最后一个参数仍然是泛型IComparer接口类型。上面我们已经定义了StudentComparer类,实现了IComparer接口,这里就可以直接使用了,下面我们只对前三个学生按照年龄由小到大进行排序。

    运行效果:

    五、总结:

    对于List的排序,.Net中给我们提供了很多选择,我们可以根据情况灵活使用。关于其他泛型集合的排序(例如Dictionary)有时间的话我后面也会逐一同大家分享,今天暂且到这里吧!

    展开全文
  • Python3 list 排序函数详解

    万次阅读 多人点赞 2018-05-28 18:55:03
    Python3 list 排序函数详解 一、列表的sort排序函数 函数原型: list.sort(key=None,reverse=False) 函数功能: 对原列表进行排序,完成排序后,原列表变为有序列表。默认情况(不传入任何参数时)按字典顺序...

    Python3 list 排序函数详解

    一、           列表的sort排序函数

    函数原型:

             list.sort(key=None,reverse=False)

    函数功能:

    对原列表进行排序,完成排序后,原列表变为有序列表。默认情况(不传入任何参数时)按字典顺序排序。

    函数参数:

    (1)     key: 主要是用来进行比较的元素,只有一个参数,具体的函数的参数就是取自于可迭代对象中。指定可迭代对象中的一个元素来进行排序指定排序时使用的单个元素或多个元素、lambda表达式;

    (2)     reverse:指字排序规则是升序还是降序,默认为升序排序;

    二、           排序示例

    1.      字符串排序

    def list_sort_string():
        list=["delphi","Delphi","python","Python","c++","C++","c","C","golang","Golang"]
        list.sort() #按字典顺序升序排列
        print("升序:",list)
    
        list.sort(reverse=True) #按降序排列
        print("降序:",list)

     

    排序结果࿱

    展开全文
  • java jdk8 list排序(项目实测)

    万次阅读 2021-02-03 11:56:01
    首先声明,排序的方法是通用的,但是这个方法是很有... * 字符串类型list排序 * author byH * data 2021/2/1 * @param list 需要排序的list */ public static void listStringSorted(List<String> list){

    首先声明,排序的方法是通用的,但是这个方法是很有针对性的,如果想要用,必须要自己改装;
    首先是最简单的Integer类型和String类型的排序(这个是通用的)

     /**
         * 字符串类型list排序
         * author byH
         * data 2021/2/1
         * @param list 需要排序的list
         */
        public static void listStringSorted(List<String> list){
              list.sort(String::compareTo);
        }
    
        /**
         * int类型list排序
         * author byH
         * data 2021/2/1
         * @param list 需要排序的list
         */
        public static void listIntegerSorted(List<Integer> list){
            list.sort(Integer::compareTo);
        }
    

    然后是稍微复杂一点点的,list里面包含了一个Integer或者String类型的list(基本算是通用的)

    /**
         * list包含int类型list的list排序
         * author byH
         * data 2021/2/1
         * @param list 需要排序的list
         * @param subscript 下标
         */
        public static void listListIntegerSorted(List<List<Integer>> list,int subscript){
            list.sort(Comparator.comparing(a -> a.get(subscript)));
        }
    
        /**
         * list包含字符串类型list的list排序
         * author byH
         * data 2021/2/1
         * @param list 需要排序的list
         * @param subscript 下标
         */
        public static void listListStringSorted(List<List<String>> list,int subscript){
            list.sort(Comparator.comparing(a -> Integer.parseInt(a.get(subscript))));
        }
    

    然后是最最复杂的,也是不通用的,可以借鉴改装,就是像这种类型:
    [[1, [0, 2, 3, 4]], [7, [2, 2, 3, 4]], [9, [5, 2, 3, 4]], [7, [8, 2, 3, 4]], [9, [9, 2, 3, 4]]]
    就是list里面包含了一个list,包含的list里面又包含了一个list,
    我现在要做的是按照最里面的list的第一个字符进行排序

            //生成测试list
            List<Object> list = new ArrayList<>();
            for(int i = 0 ; i < 5; i ++){
                List<Object> list2 = new ArrayList<>();
                List<String> list3 = new ArrayList<>();
                list2.add(String.valueOf((int) (Math.random() * 10)));
                list3.add(String.valueOf((int) (Math.random() * 10)));
                list3.add("2");
                list3.add("3");
                list3.add("4");
                list2.add(list3);
                list.add(list2);
            }
            System.out.println("排序前:"+list.toString());
            //用匿名内部类的方式排序
            Collections.sort(list, (o1, o2) -> {
                //获取第一层list
                List<Object> list1 = (List<Object>) o1;
                List<Object> list2 = (List<Object>) o2;
                //获取最里层list
                List<String> integerList1 = (List<String>) list1.get(1);
                List<String> integerList2 = (List<String>) list2.get(1);
                return Integer.parseInt(integerList1.get(0)) - Integer.parseInt(integerList2.get(0));
            });
            System.out.println("排序后:"+list.toString());
    

    结果:

    排序前:[[3, [6, 2, 3, 4]], [5, [0, 2, 3, 4]], [3, [8, 2, 3, 4]], [7, [3, 2, 3, 4]], [4, [6, 2, 3, 4]]]
    排序后:[[5, [0, 2, 3, 4]], [7, [3, 2, 3, 4]], [3, [6, 2, 3, 4]], [4, [6, 2, 3, 4]], [3, [8, 2, 3, 4]]]
    

    在这里插入图片描述
    当然了,如果你想按照第二层的list排序,只要获取第二层的第一个数据就可以了;

     //生成测试list
            List<Object> list = new ArrayList<>();
            for(int i = 0 ; i < 5; i ++){
                List<Object> list2 = new ArrayList<>();
                List<String> list3 = new ArrayList<>();
                list2.add(String.valueOf((int) (Math.random() * 10)));
                list3.add(String.valueOf((int) (Math.random() * 10)));
                list3.add("2");
                list3.add("3");
                list3.add("4");
                list2.add(list3);
                list.add(list2);
            }
            System.out.println("排序前:"+list.toString());
            //用匿名内部类的方式排序
            Collections.sort(list, (o1, o2) -> {
                //获取第一层list
                List<Object> list1 = (List<Object>) o1;
                List<Object> list2 = (List<Object>) o2;
                return Integer.parseInt(String.valueOf(list1.get(0))) - Integer.parseInt(String.valueOf(list2.get(0)));
            });
            System.out.println("排序后:"+list.toString());
    

    在这里插入图片描述

    展开全文
  • scala list排序

    千次阅读 2019-10-11 18:34:16
    现在有一个List,需要对其进行排序 val a = List(("a",2),("b",44),("c",20),("a",20)) 1、对int值进行排序 val d = a.sortBy(_._2).reverse println(d.mkString(" - ")) 结果: (b,44) - (a,20) - (c,20) - (a,2)...

    现在有一个List,需要对其进行排序

    val a = List(("a",2),("b",44),("c",20),("a",20))
    

    1、对int值进行排序

    val d = a.sortBy(_._2).reverse
    println(d.mkString(" - "))
    
    结果:
    (b,44) - (a,20) - (c,20) - (a,2)
    

    2、先对int值进行排序,再对string值 进行排序

    val c = a.sortBy(r=>(r._2,r._1))(Ordering.Tuple2(Ordering.Int.reverse,Ordering.String.reverse))
    println(c.mkString(" - "))
    
    结果:
    (b,44) - (c,20) - (a,20) - (a,2)
    
    展开全文
  • Java之List排序出错

    千次阅读 2014-03-17 22:53:17
    Java之List排序出错 Bound mismatch: The generic method sort(List) of type Collections is not applicable for the arguments (List).  The inferred type Student is not a valid substitute for the ...
  • List 排序(首先年龄排序,如果年龄相同,则按名字排序)
  • Java8集合List排序、筛选1. List1.1 ArrayList1.2 LinkedList1.3 ArrayList和LinkedList比较1.4 List过滤指定元素1.4.1 准备待测试的List1.4.2 使用Iterator遍历List1.4.2 使用Java8对List过滤筛选1.5 使用Java8对...
  • flutter dart list 排序

    千次阅读 2020-01-06 12:52:07
    工作中经常用到,商品或者聊天会话排序 List list=new List(); list.add(new Form("AAAA",1)); list.add(new Form("BBBB",2)); list.add(new Form("CCCCC",3)); list.sort((left,right)=>left.age.compare...
  • java8中list排序

    万次阅读 2017-04-06 21:03:33
    在项目开发中,很多页面的展示,都是按照一定的顺序排列的。 要想获取一个有序的list,有两种做法: 一、使用sql查出有序的list 这种方式进行排序,是最常用的,取数据...这种方式,对于对象类型的list排序,需要指
  • list排序的几种方法

    万次阅读 2019-06-11 10:52:05
    List<Integer> list = new ArrayList<>(); list.add(3); list.add(5); list.add(1); Collections工具类,升序排: Collections.sort(list); System.out.println(list); Console: [1, 3, 5] ...
  • C# List排序

    千次阅读 2009-10-20 18:17:00
    发现对一个List排序,其实是有比较简单的方法的,拿出来与大家分享 格式其实挺简单的 List.Sort(delegate(T t1, T t2) { return t1.Name.CompareTo(t2.Name);} ); 就可以按照名称排序了。 实例:listProTechEcon...
  • Unity的List排序

    千次阅读 2019-03-21 11:32:56
    默认List排序是升序排序,如果要降序排序,也很简单,只需要在前面加一个负号即可。 List<int> m_temp = new List<int>(){6,1,3,5,4}; // 升序 m_temp.Sort((x, y) => x.CompareTo(y)); // ...
  • list排序的问题

    千次阅读 2018-09-03 10:02:06
    list如何按照自定义排序 方法: 一:list有序列表 输出按照放入先后排序 二:使用Collections.sort()排序 三:创建对象 四: 发现,代码直接报错了: Bound mismatch: The generic method sort...
  • java中list排序和两个string的大小比较

    千次阅读 2018-12-25 10:25:01
    list排序方法一Comparator形式: List&lt;String&gt; keyList = new ArrayList&lt;&gt;(); keyList.add("User_Tel"); keyList.add("SystemId"); keyList.add("User_Pwd&...
  • Android Java List 排序

    千次阅读 2011-11-30 09:17:12
    原文章转自网上blog,但是其中代码运行后原来的list排序根本没有改变。 于是打开Comparator文档看了,发现原代码的compare函数实现的返回值有问题! 修正后运行结果正确了,代码如下: @SuppressWarnings...
  • yii checkBoxList 排序方式

    千次阅读 2014-06-04 17:02:16
    yii checkBoxList 排序方式 默认是
  • JDK1.8 list 排序

    万次阅读 2018-08-14 18:08:48
    首先用泛型为String的list和泛型为AuditBO对象的list进行排序 List&lt;String&gt; list = new ArrayList&lt;&gt;(); list.add("2"); list.add("1"); list.add("4&...
  • 关于 Redis 存入数据和 List 排序插入,仅限记录经历,如有不对请留言指教,谢谢 @RequestMapping("topSearchSelect") public Map<String,Object> topSearchSelect(String openId,String search){ String ...
  • JDK 8 之 List排序

    千次阅读 2019-11-04 01:36:47
    1、自然序排序一个listlist.stream().sorted().collect(Collectors.toList()); 2、自然序逆序元素,使用Comparator 提供的reverseOrder() 方法: list.stream().sorted(Comparator.reverseOrder())....
  • Java kotlin List 排序

    千次阅读 2018-08-23 18:16:20
    //List重新排序 list.sortBy { it.id} 在sortBy里面添加排序多种方法。我这里是以list里面的自定义类的id排序
  • 用Collections.sort方法对list排序有两种方法 第一种是list中的对象实现Comparable接口,如下:
  • flutter - sort List排序

    千次阅读 2019-10-18 16:28:07
    dart中,对List结构数据进行排序 注意 sort方法 会直接改变原List数组结构 List<Map> myList = [ { 'name' : 'ifredom',age:23}, { 'name' : 'JackMa',age:61}, { 'name' : 'zhazhahui',age:48}, ]; ...
  • 用了一段时间的gridview,对gridview实现的排序功能比较好奇,而且利用C#自带的排序方法只能对某一个字段进行排序,今天demo了一下,总结了三种对list排序的方法,并实现动态传递字段名对list进行排序。 首先先介绍...
  • lambda表达式 list排序

    千次阅读 2019-03-12 17:13:14
    升序降序比较,默认List排序是升序排序 如果要降序排序,也很简单,只需要在前面加一个负号 List<int> tmp = new List<int>(){5,1,22,11,4}; // 升序 tmp.Sort((x, y) => x.CompareTo(y)); // 降...
  • flutter dart 之list 排序

    万次阅读 2019-01-31 15:59:31
    List list=new List(); list.add(new Form("小明",15)); list.add(new Form("小小明",1)); list.add(new Form("大明",25)); list.sort((left,right)=&gt;left.age.compare...
  • Python3 list 排序字符串排序

    万次阅读 2018-12-18 11:37:45
     list.sort(key=None,reverse=False) 函数功能: 对原列表进行排序,完成排序后,原列表变为有序列表。默认情况(不传入任何参数时)按字典顺序排序。 函数参数: (1) key: 主要是用来进行比较的元素,只有一...
  • List排序并删除重复值 a=[‘b’,’c’, ‘d’,’b’,’c’,’a’,’a’] 方法:使用set() b=sorted(set(a)) print( b) List排序不删除重复值&amp;amp;gt;&amp;amp;gt;&amp;amp;gt; a=[1,1,2,3,4,5,...
  • Java的List排序

    万次阅读 2019-06-08 21:32:44
    开发工具与关键技术:MyEclipse 10、Java语法 作者:邓婵 撰写时间:2019年6 月 5日 集合和数组的不同点: 数组:只能存储固定大小同一类型的元素。...Collection和map属于同一系统集合,list接口和set接口继...
  • groovy给list排序

    千次阅读 2018-04-10 16:29:27
    groovy List 多字段排序List&lt;Map&lt;String, Object&gt;&gt; list = [["loc": "A-02-01","code":"asdf"],["loc": "B-01-01","...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 684,925
精华内容 273,970
关键字:

list怎么排序