list排序

Java集合类: Set、List、Map、Queue使用

自作多情 提交于 2020-03-29 20:23:20
目录 1. Java集合类基本概念 2. Java集合类架构层次关系 3. Java集合类的应用场景代码 1. Java集合类基本概念 在编程中,常常需要集中存放多个数据。从传统意义上讲,数组是我们的一个很好的选择,前提是我们事先已经明确知道我们将要保存的对象的数量。一旦在数组初始化时指定了这个数组长度,这个数组长度就是不可变的,如果我们需要保存一个可以动态增长的数据(在编译时无法确定具体的数量),java的集合类就是一个很好的设计方案了。 集合类主要负责保存、盛装其他数据,因此集合类也被称为容器类。所以的集合类都位于java.util包下,后来为了处理多线程环境下的并发安全问题,java5还在java.util.concurrent包下提供了一些多线程支持的集合类。 在学习Java中的集合类的API、编程原理的时候,我们一定要明白,"集合"是一个很古老的数学概念,它远远早于Java的出现。从数学概念的角度来理解集合能帮助我们更好的理解编程中什么时候该使用什么类型的集合类。 Java容器类类库的用途是"保存对象",并将其划分为两个不同的概念: 1) Collection 一组"对立"的元素,通常这些元素都服从某种规则   1.1) List必须保持元素特定的顺序   1.2) Set不能有重复元素   1.3) Queue保持一个队列(先进先出)的顺序 2) Map 一组成对的

Java中Comparable和Comparator的区别

天涯浪子 提交于 2020-03-29 19:46:33
前言 最近复习遇到了这个问题,在此进行一个详细的记录,分享给大家。 两个接口的区别 包区别 Comparable接口是在java.lang下。 Comparator接口是在java.util下。 使用区别 如果在定义类时,就实现了Comparable接口,直接在里面重写compareTo()方法,如果没实现,后面在业务开发中需要有比较排序的功能,就再单独写一个类实现Comparator接口,在里面重写compare()方法,然后这个类需要作为参数传入到工具类Collections.sort和Arrays.sort方法中。 使用场景 主要用于集合排序Collections.sort和Arrays.sort。 使用Comparable接口的实现方案 在定义类的时候,就实现这个接口,将排序规则定义好。 /** * 实体类,实现Comparable接口 */ public class Person implements Comparable<Person>{ //属性 private String name; private int age; private int salary; //get和set方法 public String getName() { return name; } public void setName(String name) { this.name = name;

day13匿名函数

被刻印的时光 ゝ 提交于 2020-03-27 20:57:21
补充知识点: def func(*args): for i in args: for j in i: yield i print(list(func('asdf',(1,2,3)))) #list可以将生成器中的所有元素添加到列表中。 #简化上述函数: def func(*args): for i in args: yield from i #优化了内层循环,提高了运行效率。 匿名函数(用lambda构建):一语句函数,比较简单的函数。形式:lambda 参数 : 返回值 def func(a,b): return a+b #构建匿名函数: func1 = lambda a,b:a+b print(func1(1,2)) lambda 参数 : 返回值:lambda后直接加形参,形参加多少都可以,但一般只用位置参数,参数之间需要用”,“隔开。 #例1:接受一个可切片的数据,以元祖形式返回索引位0与2的对应元素 func = lambda a:(a[0],a[2]) #例2:接收两个int参数,将较大的数据返回。 func = lambda a,b:a if a>b else b 内置函数: int():将字符串类型转换为int类型;取整(舍尾法) float():将int和str转换为float。 list():将一个可迭代对象转换成列表 tuple():将一个可迭代对象转换成元组

八大排序算法总结

孤街浪徒 提交于 2020-03-26 05:29:24
排序算法可以分为内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存。 常见的内部排序算法有:插入排序、希尔排序、选择排序、冒泡排序、归并排序、快速排序、堆排序、基数排序等。 本文将依次介绍上述八大排序算法。 算法一:插入排序 插入排序示意图 插入排序是一种最简单直观的排序算法,它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。 算法步骤 : 1)将第一待排序序列第一个元素看做一个有序序列,把第二个元素到最后一个元素当成是未排序序列。 2)从头到尾依次扫描未排序序列,将扫描到的每个元素插入有序序列的适当位置。(如果待插入的元素与有序序列中的某个元素相等,则将待插入元素插入到相等元素的后面。) 代码实现: void insert_sort(int array[],unsignedint n) { int i,j; int temp; for(i = 1;i < n;i++) { temp = array[i]; for(j = i;j > 0&& array[j - 1] > temp;j--) { array[j]= array[j - 1]; } array[j] = temp; } } 算法二:希尔排序 希尔排序示意图 希尔排序 ,也称

OC模型数组排序

被刻印的时光 ゝ 提交于 2020-03-24 11:44:06
3 月,跳不动了?>>> // 排序key, 某个对象的属性名称,升降序, YES-升序, NO-降序 NSSortDescriptor *sort = [NSSortDescriptor sortDescriptorWithKey:@"type" ascending:NO]; // 排序结果 NSArray * Arr = [list sortedArrayUsingDescriptors:[NSArray arrayWithObject:sort]]; 来源: oschina 链接: https://my.oschina.net/wayzhu/blog/3210027

排序算法(java版)

半腔热情 提交于 2020-03-23 20:34:41
1. 冒泡算法 2. 快速排序 3. 归并排序 4. 选择排序 5. 堆排序 排序算法 重要性不言而喻,很多算法问题往往选择一个好的排序算法往往问题可以迎刃而解 1、冒泡算法 冒泡排序(Bubble Sort)也是一种简单直观的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端。也就是双重循环就可以搞定的问题但是需要注意下一边界 算法步骤: 1)比较相邻的元素。如果第一个比第二个大,就交换他们两个。 2)对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。这步做完后,最后的元素会是最大的数。 3)针对所有的元素重复以上的步骤,除了最后一个。 4)持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。 1 public void BubbleSort(int[] a) { 2 int temp = 0; 3 int len = a.length; 4 for (int i = 0; i < len; i++) { 5 for (int j = 1; j < len - i; j++) 6 if (a[j - 1] > a[j]) { 7 //注意分清是a[j-1]还是a[j

Java基础--常用API--集合类相关API

£可爱£侵袭症+ 提交于 2020-03-23 06:07:00
一、泛型   1、泛型的本质是将类型参数化,即将数据类型作为参数。     2、泛型可以在编译期进行检查,其所有的强制转换是隐式且自动的,提高了代码的安全性。      3、泛型可以用在类(泛型类)、接口(泛型接口)、方法(泛型方法)的创建。       4、泛型的类型参数只能为引用类型,不能为基本类型。 二、常用集合类 1、体系分类:   (1)Collection体系: Set、List、Queue。     Set:元素无序且不可重复。HashSet,TreeSet。     List:元素有序且可重复。LinkedList,ArrayList。     Queue:队列,先进先出。Deque。   (2)Map体系:HashMap、TreeMap。 2、分类如下 3、集合与数组的区别 三、Collection集合 1、相关方法: 2、迭代器   (1)使用Iterator接口,不能直接new,使用集合的方法去调用。即Iterator it = c.iterator();     (2) java.util.Iterator; 其使用流程为问,取,删(不必须)。      (3)方法:     boolean hasNext();问操作,查询当前集合是否还有元素。     Object next();取操作,取出集合元素。     Iterator remove() ;删操作

Stream API学习笔记

允我心安 提交于 2020-03-22 18:17:42
Java8 中Stream API介绍   Stream 使用一种类似用 SQL 语句从数据库查询数据的直观方式来提供一种对 Java 集合运算和表达的高阶抽象。这种风格将要处理的元素集合看作一种流, 流在管道中传输, 并且可以在管道的节点上进行处理, 比如筛选, 排序,聚合等。元素流在管道中经过中间操作(intermediate operation)的处理,最后由最终操作(terminal operation)得到前面处理的结果。   流(Stream)的概念:流是数据渠道,用于操作数据(集合、数组等)所生成的元素序列。 注意: Stream自己不会存储元素。 Stream不会改便源对象,相反,它们会返回一个持有结果的新Stream。 Stream操作是延迟执行的,这意味着他们会等到需要结果的时候执行。 Stream的操作三个步骤: 创建Stream:一个数据源(如数组、集合),获取一个流 中间操作:一个中间操作链,对数据源的数据进行处理 终止操作(终端操作):一个终止操作,执行中间操作链,并产生结果 创建Stream 创建流的方式有如下几种方式: //创建Stream @Test public void test01(){ //1.可以通过Collection系列集合提供的stream() 或 parallelStream() List<String> list = new

数据结构之排序

試著忘記壹切 提交于 2020-03-22 06:37:29
这篇文章主要讨论常见的排序算法。   排序算法分为内部排序和外部排序两种,内部排序是指只利用内存来完成的排序,外部排序是指借助外部存储设备完成的排序。外部排序主要针对记录比较多、内存无法一次全部加载的情况。我们这里主要关注内部排序。   内部排序大致分为四类:1)插入排序;2)交换排序;3)选择排序;4)归并排序;5)基数排序。我们下面会分别进行描述。   首先,我们来确定排序的对象,这里我们假设排序的对象是随机生成的非重复整数数组,有下面的辅助方法: 整型数组辅助方法(生成和打印) 1 public static int[] createArray(int count, int max) 2 { 3 if (count < 1) return null; 4 int[] arrResult = new int[count]; 5 java.util.Random r = new java.util.Random(); 6 for(int i = 0; i < arrResult.length; i++) 7 { 8 int temp = 0; 9 while(true) 10 { 11 temp = r.nextInt(max); 12 int j = 0; 13 for (j = 0; j < i; j++) 14 { 15 if (arrResult[j] == temp)

python序列(六)列表排序

情到浓时终转凉″ 提交于 2020-03-21 18:24:01
  1.sort方法排序原址排序     list.sort(key=None,reverse=False(or True))     当reverse=False时:为正向排序;     当reverse=True时:为反向排序。     默认为False。   2.key:排序关键字,值为一个函数,此函数只有一个参数且返回一个值,比如,有一个User对象的list,希望通过对象的user_id树形进行排序,可以提供一个以User实例作为输入并输出对应user_id值得函数给key(即key=lambda u:uuser_id或key=attrgetter(‘user_id’))   3.执行完后会改变原来的list,如果你不需要原来的list,这种效率稍微高点 >>> list = [1,2,3,4,5,6,7,8,9] >>> list [1, 2, 3, 4, 5, 6, 7, 8, 9] >>> import random>>> random.shuffle(list)    #打乱顺序 >>> list [8, 1, 9, 2, 4, 3, 5, 6, 7] >>> list.sort()          #默认是升序排序 >>> list.sort(reverse = True)  #降序排序 >>> list [9, 8, 7, 6, 5, 4, 3, 2, 1]