list排序

lambda表达式之list排序

末鹿安然 提交于 2020-03-04 23:47:31
lambda表达式常用的list排序 import java.util.ArrayList; import java.util.Arrays; import java.util.Comparator; import java.util.List; import static java.util.Comparator.comparing; public class LambdaTest { public static void main(String[] args) { List<Person> personList = new ArrayList<>(); personList.addAll(Arrays.asList( new Person(12, 178, "张三2"), new Person(12, 176, "李四"), new Person(16, 180, "王五")) ); System.out.println(personList); //普通排序 personList.sort(new Comparator<Person>() { public int compare(Person a1, Person a2) { return a1.getAge().compareTo(a2.getAge()); } }); //lambda排序1 personList

2020年Java集合课堂笔记

孤人 提交于 2020-03-04 12:16:53
Java集合 1.集合概述 集合 :集合是java中提供的一种容器,可以用来存储多个数据。 集合与数组的区别: 数组长度固定,集合长度可变 数组只能存储类型相同的元素,集合存储对象,对象类型可以不同 集合框架 2.Collection接口 Collection是所有单列集合的根接口,方法可用于操作所有单列集合 Collection接口的主要方法 方法声明 功能描述 boolean add(Object o) 向集合中添加一个元素 boolean addAll(Collection c) 将集合c中的所有元素添加到该集合中 void clear() 删除该集合的所有元素 boolean remove(Object o) 删除该集合中的o boolean removeAll(Collection c) 删除该集合中包含集合c中的所有集合 boolean isEmpty() 判断该集合是否为空 boolean contains(Object o) 判断该集合中是否包含元素o boolean containsAll(Collection c) 判断该集合是否包含集合c的所有元素 int size() 判断该集合元素的个数 Iterator iterator() 用于遍历该集合的所有元素 Stream stream() 将集合源转换为有序元素的流对象 3.List接口 List接口简介

Java Map按键(Key)排序和按值(Value)排序

这一生的挚爱 提交于 2020-03-04 11:06:52
Map排序的方式有很多种,两种比较常用的方式:按键排序(sort by key), 按值排序(sort by value)。 1、按键排序 jdk内置的java.util包下的TreeMap<K,V>既可满足此类需求,向其构造方法 TreeMap(Comparator<? super K> comparator) 传入我们自定义的比较器即可实现按键排序。 Java代码 public class MapSortDemo { public static void main(String[] args) { Map<String, String> map = new TreeMap<String, String>(); map.put( "KFC" , "kfc" ); map.put( "WNBA" , "wnba" ); map.put( "NBA" , "nba" ); map.put( "CBA" , "cba" ); Map<String, String> resultMap = sortMapByKey(map); //按Key进行排序 for (Map.Entry<String, String> entry : resultMap.entrySet()) { System.out.println(entry.getKey() + " " + entry.getValue()

C# 用 List 实现排序

℡╲_俬逩灬. 提交于 2020-03-03 17:29:44
参考自《大话数据结构》 这是给我自己看的,看不懂可以问我hhhh 首先公用方法如下: 交换两个数的方法Swap(): static void Swap ( List < int > L , int i , int j ) { int temp = L [ i ] ; L [ i ] = L [ j ] ; L [ j ] = temp ; } 打乱List内容的方法: static void randsort ( List < int > A ) { Random random = new Random ( ) ; int index = 0 ; int temp = 0 ; for ( int i = 0 ; i < A . Count ; i ++ ) { index = random . Next ( 0 , A . Count - 1 ) ; if ( index != i ) { temp = A [ i ] ; A [ i ] = A [ index ] ; A [ index ] = temp ; } } } 测试代码: static void Main ( string [ ] args ) { int nums = 10 ; //list的长度 # region List < int > list = new List < int > ( ) ; for (

第7节_排序

大憨熊 提交于 2020-03-03 08:26:14
books . sort_values ( by = 'List' , inplace = True , ascending = True ) 按列排序,其中: By,按此列排序 Inplace,不要创建新的工作表 Ascending=True,从小到大排 Ascending=Fulse,从大到小排 books . sort_values ( by = [ 'List' , 'Discount' ] , inplace = True ) by=[‘List’,‘Discount’],先按List排序,在LIst排好的基础上,按Discount排序 books . . sort_values ( by = [ 'List' , 'Discount' ] , inplace = True , ascending = [ True , False ] by=[‘List’,‘Discount’],先按List排序,在LIst排好的基础上,按Discount排序,且List从小到大排,Discount从大到小排 来源: CSDN 作者: 好多米的秃头之路1024 链接: https://blog.csdn.net/weixin_46276803/article/details/104618114

Java Lambda表达式入门

自作多情 提交于 2020-03-02 19:15:23
原文链接: Start Using Java Lambda Expressions 下载示例程序 Examples.zip 。 原文日期: 2014年4月16日 翻译日期: 2014年4月27日 翻译人员: 铁锚 简介 ( 译者注 :虽然看着很先进,其实Lambda表达式的本质只是一个" 语法糖 ",由编译器推断并帮你转换包装为常规的代码,因此你可以使用更少的代码来实现同样的功能。本人建议不要乱用,因为这就和某些很高级的黑客写的代码一样,简洁,难懂,难以调试,维护人员想骂娘.) Lambda表达式是Java SE 8中一个重要的新特性。lambda表达式允许你通过表达式来代替功能接口。 lambda表达式就和方法一样,它提供了一个正常的参数列表和一个使用这些参数的主体(body,可以是一个表达式或一个代码块)。 Lambda表达式还增强了集合库。 Java SE 8添加了2个对集合数据进行批量操作的包: java.util.function 包以及 java.util.stream 包。 流(stream)就如同迭代器(iterator),但附加了许多额外的功能。 总的来说,lambda表达式和 stream 是自Java语言添加泛型(Generics)和注解(annotation)以来最大的变化。 在本文中,我们将从简单到复杂的示例中见认识lambda表达式和stream的强悍。

归并排序——MergeSort实现(Java)

蓝咒 提交于 2020-03-02 17:52:57
根据大佬们的一些构思和做法,自己实现了归并算法,总体利用递归实现,空间消耗的还是比较大,mergesort方法的空间复杂度就在O(N). package 数据结构_排序 ; public class 归并排序 { public static void main ( String [ ] args ) { int [ ] arr = { 1 , 8 , 36 , 5 , 2 , 4 , 6 } ; MergeSort sort = new MergeSort ( ) ; sort . mergeSort ( arr , 0 , arr . length - 1 ) ; for ( int i : arr ) { System . out . print ( i + " " ) ; } } } class MergeSort { /** * * @param a add a list of need sort * @param start where you start sorting * @param end where you end sorting */ public void mergeSort ( int [ ] a , int start , int end ) { //当拆分至最后一个停止拆分,否则递归拆分 if ( start < end ) { int mid = (

常用数据结构以及数据结构的排序算法

耗尽温柔 提交于 2020-03-02 02:39:24
数组 (Array)   在程序设计中,为了处理方便, 把具有相同类型的若干 变量 按有序的形式组织起来。这些按序排列的同类数据元素的集合称为 数组 。在C语言中, 数组属于构造数据类型。一个数组可以分解为多个数组元素,这些数组元素可以是基本数据类型或是构造类型。因此按数组元素的类型不同,数组又可分为数值数组、字符数组、 指针数组 、结构数组等各种类别。 栈 (Stack)   是只能在某一端插入和删除的特殊 线性表 。它按照先进后出的原则存储数据,先进入的数据被压入栈底,最后的数据在栈顶,需要读数据的时候从栈顶开始弹出数据(最后一个数据被第一个读出来)。 队列 (Queue)   一种特殊的 线性表 ,它只允许在表的 前端 (front)进行删除操作,而在表的后端(rear)进行插入操作。进行插入操作的端称为队尾,进行删除操作的端称为队头。队列中没有元素时,称为空队列。 链表 (Linked List)   是一种物理存储单元上非连续、非顺序的存储结构,数据元素的 逻辑顺序 是通过链表中的指针链接次序实现的。链表由一系列结点(链表中每一个元素称为结点)组成,结点可以在运行时 动态 生成。每个结点包括两个部分:一个是存储数据元素的数据域,另一个是存储下一个结点地址的指针域。 树 (Tree)   是包含n(n>0)个结点的有穷集合K,且在K中定义了一个关系N,N满足 以下条件:  

了不起的Java-Stream流处理

怎甘沉沦 提交于 2020-03-01 19:19:47
问题引入 假如你是一个厨师,你有一份菜单列表(DishMenu),你需要一份低卡路里(Caloric低于400),并且按卡路里数值排序的top3(最低的前3个)的仅包含菜名的菜单列表,你会怎么做? 这个问题也贯穿了开发中大量需要处理list、set、map之类的集合操作,是非常非常基础的问题。而Stream就是处理集合的。 相关数据类: import java.util.*; public class Dish { private final String name; private final boolean vegetarian; private final int calories; private final Type type; public Dish(String name, boolean vegetarian, int calories, Type type) { this.name = name; this.vegetarian = vegetarian; this.calories = calories; this.type = type; } public String getName() { return name; } public boolean isVegetarian() { return vegetarian; } public int

Java编程的逻辑 (53) - 剖析Collections - 算法

六眼飞鱼酱① 提交于 2020-03-01 17:50:00
之前几节介绍了各种具体容器类和抽象容器类,上节我们提到,Java中有一个类Collections,提供了很多针对容器接口的通用功能,这些功能都是以静态方法的方式提供的。 都有哪些功能呢?大概可以分为两类: 对容器接口对象进行操作 返回一个容器接口对象 对于第一类,操作大概可以分为三组: 查找和替换 排序和调整顺序 添加和修改 对于第二类,大概可以分为两组: 适配器:将其他类型的数据转换为容器接口对象 装饰器:修饰一个给定容器接口对象,增加某种性质 它们都是围绕容器接口对象的,第一类是针对容器接口的通用操作,这是我们之前在接口的本质一节介绍的面向接口编程的一种体现,是接口的典型用法,第二类是为了使更多类型的数据更为方便和安全的参与到容器类协作体系中。 由于内容比较多,我们分为两节,本节讨论第一类,下节我们讨论第二类。下面我们分组来看下第一类中的算法。 查找和替换 查找和替换包含多组方法,我们分别来看下。 二分查找 我们在剖析Arrays类的时候介绍过二分查找,Arrays类有针对数组对象的二分查找方法,Collections提供了针对List接口的二分查找,如下所示: public static <T> int binarySearch(List<? extends Comparable<? super T>> list, T key) public static <T> int