list排序

Set和Map

孤街浪徒 提交于 2019-11-28 06:23:29
Set接口和Map接口 回顾 1 集合概念,用来存储一组数据的容器。和数组类似, 数组是长度固定的,集合长度可以变化。 数组能存储基本类型和引用类型,集合只能存储引用类型。 2 Collection接口,父接口, add() remove() clear() contains() iterator() 3 Collection有两个子接口 List和Set Collection:特点:一部分是有序的,有一部分是无序的,还有一部分可以重复,有一部分不能重复 4 泛型:本质使用数据类型作为参数传递:好处:1提高代码的重用性 2 防止类型转换异常,保证数据的安全 4.1 定义泛型类 泛型方法 泛型接口 <>表示泛型 T是一个占位符,表示一个数据类型,只能是引用类型 public class Generic<T>{ T t; pubic void show(T t){ } public T getT(){ return t; } } public class Generic2{ public <T> void show(T t){ } } public interface Usb<T>{ } 4.2 使用 创建类对象,指定泛型的实际类型 4.3 泛型限制,<?> 表示任何类型 <? extends T> 表示泛型上限, T类型或T的子类 <? super T> 表示泛型下限

Google guava工具类的介绍和使用

懵懂的女人 提交于 2019-11-28 05:12:32
概述 工具类 就是封装平常用的方法,不需要你重复造轮子,节省开发人员时间,提高工作效率。谷歌作为大公司,当然会从日常的工作中提取中很多高效率的方法出来。所以就诞生了guava。 guava的优点: 高效设计良好的API,被Google的开发者设计,实现和使用 遵循高效的java语法实践 使代码更刻度,简洁,简单 节约时间,资源,提高生产力 Guava工程包含了若干被Google的 Java项目广泛依赖 的核心库,例如: 集合 [collections] 缓存 [caching] 原生类型支持 [primitives support] 并发库 [concurrency libraries] 通用注解 [common annotations] 字符串处理 [string processing] I/O 等等 。 使用 引入gradle依赖(引入Jar包) compile 'com.google.guava:guava:26.0-jre' 1.集合的创建 // 普通Collection的创建 List<String> list = Lists.newArrayList(); Set<String> set = Sets.newHashSet(); Map<String, String> map = Maps.newHashMap(); // 不变Collection的创建

Java 数组

杀马特。学长 韩版系。学妹 提交于 2019-11-28 03:29:56
备注:如有错误请联系。 1.Java 数组的定义 Java 语言中提供的数组是用来存储固定大小的同类型元素。 2.Java 数组的声明 首先必须声明数组变量,才能在程序中使用数组。下面是声明数组变量的语法: dataType[] arrayRefVar; // 首选的方法 或 dataType arrayRefVar[]; // 效果相同,但不是首选方法 实例 double[] myList; // 首选的方法 或 double myList[]; // 效果相同,但不是首选方法 3.数组的优势与局限 优点: 1.按照索引查询元素速度快 2.能存储大量数据 3.按照索引遍历数组方便 缺点: 1.根据内容查找元素速度慢2.数组的大小 一经确定不能改变。 3.数组只能存储一种类型的数据4. 增加、删除元素效率慢 5.未封装任何方法,        所有操作都需要用户自己定义。   4.数组的动态化初始化 数据类型 [] 数组名 = new 数据类型[数组长度]; 实例 int[] arr = new int[3]; /* * 左边:       * int:说明数组中的元素的数据类型是int类型      * []:说明这是一个数组      * arr:是数组的名称       * 右边:       * new:为数组分配内存空间       * int

10比较器常用类

余生长醉 提交于 2019-11-28 03:24:06
Comparable和Comparator接口都是为了对类进行比较,众所周知,诸如Integer,double等基本数据类型,java可以对他们进行比较,而对于类的比较,需要人工定义比较用到的字段比较逻辑。可以把Comparable理解为内部比较器,而Comparator是外部比较器,基本的写法如下: class Apple implements Comparable<Apple>{ int id; double price; public Apple(int id, double price) { this.id = id; this.price = price; } public int compareTo(Apple o) { //return Double.compare(this.getPrice(),o.getPrice()); if (Math.abs(this.price-o.price)<0.001) return 0; else return (o.price-this.price)>0?1:-1; } @Override public String toString() { return "Apple{" + "id=" + id + ", price=" + price + '}'; } } class AESComparator implements

Spring Data Jpa:分页、Specification、Criteria

梦想与她 提交于 2019-11-28 01:36:54
分页的主要接口与类 PagingAndSortingRepository 继承自 CrudRepository 接口,提供了排序以及分页查询能力,提供了两个方法 Iterable<T> findAll(Sort var1); Page<T> findAll(Pageable var1); 虽然 PagingAndSortingRepository 接口中只有 findAll 方法,但是我们依然可以使用 Repository 中的衍生查询,我们只要把 Pageable 放到最后一个参数即可 JpaRepository 接口继承了 PagingAndSortingRepository 接口,并封装了常用的 CRUD 方法,通常我们继承 JpaRepository 来进行操作 Sort Sort 主要为了实现排序功能,内有枚举类指示排序方式 public static enum Direction { ASC, DESC; //省略方法 } Sort 的构造函数如下 //可以输入多个Sort.Order对象,在进行多个值排序时有用 public Sort(Sort.Order... orders) //和上面的方法一样,无非把多个参数换成了一个List public Sort(List<Sort.Order> orders) //当排序方向固定时,使用这个比较方便,第一个参数是排序方向

java基础之冒泡排序

最后都变了- 提交于 2019-11-28 01:26:13
1.冒泡排序 冒泡排序是一种比较简单的排序算法。算法的原理是: 重复地走访过要排序的数列,一次比较相邻的两个元素,按照规定好的顺序进行比较,如果他们的顺序错误就把他们交换过来。走访数列的工作重复的进行直到没有再需要交换的元素,此时数列的排序已经完成。 核心代码: 1 private static void bubbleSortTest(int arr[]) { 2 int temp = 0; 3 for (int i = 0; i < arr.length-1; i++) { 4 for (int j = arr.length-1; j > i; j--) { 5 if (arr[j-1] > arr[j]) { 6 temp = arr[j-1]; 7 arr[j-1] = arr[j]; 8 arr[j] = temp; 9 } 10 } 11 } 12 } 以上代码完成的工作是采用冒泡排序从小到大排列一个数组。 在外循环中从前往后读数组,然后在内循环中从后往前比较,相邻的数进行两两比较,若前一个数比它相邻的后一个大,则交换他们的位置。每次外循环一次都把第i小的元素移到了arr[i]的位置,所以内循环中的条件是j>i,因为arr[i]前面的都排好了序。每次从后往前比较时,到了arr[i]就不用再继续了。 当然,上面的核心代码也可以写成以下这种形式: 1 private

Java基础-杂货铺

允我心安 提交于 2019-11-28 00:48:45
初学Java时总结的一些基础,对于Java经验者们看来这些都是很简单的基础知识,但正所谓:“根基不牢,地动天摇”。也不要忽略了基础的重要性,温故而知新。本篇文章不是什么专题,只是记录,有不对的地方欢迎各路神佛批评指正。 原子性 :如果把一个事务可看作是一个程序,它要么完整的被执行,要么完全不执行。这种特性就叫原子性。 源代码中一些常见标识 : E - Element (在集合中使用,因为集合中存放的是元素) T - Type(Java 类) K - Key(键) V - Value(值) N - Number(数值类型) ? - 表示不确定类型 细小的了解,省去刚开始看源代码时一脸懵。 IP和端口 :ip相当于街道,端口就相当于门牌号。 常见符号 : \n换行相当于回车,回到下一行最开始位置; \t横向跳格,将光标移动下一个水平制表位置; \b退格; \r回车,Linux、unix表示返回到当行的最开始位置,Mac OS中表示换行且返回到下一行最开始位置; \f走纸换页。 构造方法 :当新对象被创建的时候,构造方法会被调用。每一个类都有构造方法。在程序员没有给类提供构造方法的情况下,Java编译器会为这个类创建一个默认的构造方法。如果想为一个类传入参数,则重定义它的构造方法即可。 Java最基础 : 基础数据类型:byte short int long float double

C#排序 转

与世无争的帅哥 提交于 2019-11-27 21:22:58
本文链接:https://blog.csdn.net/fysuccess/article/details/36416255 C#中List<T>排序的两种方法 List<Student> stu = (List<Student>)Session["StudentList"]; Linq表达式: //按学号降序 List<Student> stuList = (from s instu orderby s.stuNOdescending select s).ToList<Student>(); //按学号升序 List<Student> stuList = (from s instu orderby s.stuNO select s).ToList<Student>(); 使用Lambda表达式排序: //按学号降序 单字段:List<Student> stuList= stu.OrderByDescending(s=> s.orderid).ToList<Student>(); 多字段:List<Student> stuList= stu.OrderByDescending(s=> new{s.stuNO,s.stuName}).ToList<Student>(); //按学号升序 单字段:List<Student> stuList= stu.OrderBy(s=> s.stuNO

基础之Collections与Arrays

吃可爱长大的小学妹 提交于 2019-11-27 19:53:51
Collections工具类: 排序操作: void reverse(List list) //反转 void shuffle(List list) //随机排序 void sort(List list) //按自然排序的升序排序 void sort(List list, Comparator c) //定制排序,由Comparator控制排序逻辑 void swap(List list, int i , int j) //交换两个索引位置的元素 void rotate(List list, int distance) //旋转。当distance为正数时,将list后distance个元素整体移到前面。当distance为负数时,将 list的前distance个元素整体移到后面。 ArrayList<Integer> arrayList = new ArrayList<Integer>(); arrayList.add(-1); arrayList.add(3); arrayList.add(3); arrayList.add(-5); arrayList.add(7); arrayList.add(4); arrayList.add(-9); arrayList.add(-7); System.out.println("原始数组:"); System.out.println

几种排序算法的java实现

旧时模样 提交于 2019-11-27 19:50:34
1 import java.util.Arrays; 2 3 /** 4 * 各种排序算法从小到大进行排序 5 */ 6 public class Test { 7 8 public static void main(String args[]) { 9 int[] n = { 5, 2, 3, 4, 1 }; 10 int[] n1, n2, n3; 11 n1 = n2 = n3 = Arrays.copyOf(n, n.length); 12 13 System.out.println("原来的数组:"); 14 printArray(n); 15 16 selectionSort(n1); 17 System.out.println("\n选择排序后:"); 18 printArray(n1); 19 20 bubbleSort(n2); 21 System.out.println("\n冒泡排序后:"); 22 printArray(n2); 23 24 insertionSort(n3); 25 System.out.println("\n插入排序后:"); 26 printArray(n3); 27 } 28 29 /** 选择排序:首先确定的是最小元素 */ 30 private static void selectionSort(int number[]) {