list排序

Java Map 按key排序和按Value排序

若如初见. 提交于 2019-12-10 08:32:18
Java Map 按key排序和按Value排序 一.理论准备 Map是键值对的集合接口,它的实现类主要包括:HashMap,TreeMap,Hashtable以及LinkedHashMap等。 TreeMap:基于红黑树(Red-Black tree)的 NavigableMap 实现,该映射根据其键的自然顺序进行排序,或者根据创建映射时提供的 Comparator 进行排序,具体取决于使用的构造方法。 HashMap的值是没有顺序的,它是按照key的HashCode来实现的,对于这个无序的HashMap我们要怎么来实现排序呢?参照TreeMap的value排序。 Map.Entry返回Collections视图。 二.key排序 TreeMap默认是升序的,如果我们需要改变排序方式,则需要使用比较器:Comparator。Comparator可以对集合对象或者数组进行排序的比较器接口,实现该接口的public compare (T o1,To2) 方法即可实现排序,如下: import java.util.Comparator; import java.util.Iterator; import java.util.Map; import java.util.Set; import java.util.TreeMap; public class TreeMapTest {

jqGrid 详解

泪湿孤枕 提交于 2019-12-10 04:17:04
JQGrid JQGrid是一个在jquery基础上做的一个表格控件,以ajax的方式和服务器端通信。 JQGrid Demo 是一个在线的演示项目。在这里,可以知道jqgrid可以做什么事情。 下面是转自其他人blog的一个学习资料,与其说是学习资料,说成查询帮助文档更加合适。 jqGrid学习之 ------------- 安装 jqGrid安装很简单,只需把相应的css、js文件加入到页面中即可。 按照官网文档: /myproject/css/ ui.jqgrid.css /ui-lightness/ /images/ jquery-ui-1.7.2.custom.css /myproject/js/ /i18n/ grid.locale-bg.js list of all language files …. Changes.txt jquery-1.3.2.min.js jquery.jqGrid.min.js 在页面中写法: Java 代码 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"

大数据学习day22------spark05------1. 学科最受欢迎老师解法补充 2. 自定义排序

一曲冷凌霜 提交于 2019-12-10 00:11:52
1. 学科最受欢迎老师解法补充 day21中该案例的解法四还有一个问题,就是当各个老师受欢迎度是一样的时候,其排序规则就处理不了,以下是对其优化的解法 实现方式五 FavoriteTeacher5 package com._51doit.spark04 import org.apache.spark.{Partitioner, SparkConf, SparkContext} import org.apache.spark.rdd.RDD import scala.collection.mutable object FavoriteTeacher5 { def main(args: Array[String]): Unit = { val isLocal = args(0).toBoolean //创建SparkConf,然后创建SparkContext val conf = new SparkConf().setAppName(this.getClass.getSimpleName) if (isLocal) { conf.setMaster("local[*]") } val sc = new SparkContext(conf) //指定以后从哪里读取数据创建RDD val lines: RDD[String] = sc.textFile(args(1)) //对数据进行切分

Java的Stream流式处理

…衆ロ難τιáo~ 提交于 2019-12-09 06:29:50
在公司,看到大神写的代码优美而高效,其中之一就是对集合等数据结构大量使用了Stream流式操作,极大的提高编程效率和程序可读性。下面学习一下流式操作,在这里用博客记录一下。 ##为什么需要 Stream Stream 作为 Java 8 的一大亮点,它与 java.io 包里的 InputStream 和 OutputStream 是完全不同的概念。它也不同于 StAX 对 XML 解析的 Stream,也不是 Amazon Kinesis 对 大数据 实时处理的 Stream 。 Java 8 中的 Stream 是对集合(Collection)对象功能的增强,它专注于对集合对象进行各种非常便利、高效的聚合操作(aggregate operation),或者大批量数据操作 (bulk data operation) 。Stream API 借助于同样新出现的 Lambda 表达式,极大的提高编程效率和程序可读性。同时它提供串行和并行两种模式进行汇聚操作,并发模式能够充分利用多核处理器的优势,使用 fork/join 并行方式来拆分任务和加速处理过程。通常编写并行代码很难而且容易出错, 但使用 Stream API 无需编写一行多线程的代码,就可以很方便地写出高性能的并发程序。所以说,Java 8 中首次出现的 java.util.stream 是一个函数式语言

Java学习笔记-----comparable和comparator使用方法

我的梦境 提交于 2019-12-08 04:30:39
我不知道是为啥,最近特别想写博客,在这里不仅仅能复习,还可能在写的同时,想到新的东西,感觉很棒,所谓温故而知新吧! 那么开始今天的话题:在之前有一篇博客写到对一个对象排序的程序段,在那个里面提到了comparator接口,但是在那个里面有的人可能不理解,现在详细讲一下。 什么时候我们需要使用这两个接口呢? 当然是在排序的时候了,一般时候我们都是拿collection.sort()方法来进行排序,那么…… static < T extends Comparable < ? super T >> void sort ( List < T > list ) //根据元素的自然顺序 对指定列表按升序进行排序。 static < T > void sort ( List < T > list , Comparator < ? super T > c ) //根据指定比较器产生的顺序对指定列表进行排序。 我查了一下Java API, 如上面一段代码 (1)第一个方法是传入List链,但是这个list必须是comparable类型的 (2)第二个方法是传入一个list链(泛型不泛型无所谓),再传入一个参数是comparator对象 那么且听我细细道来 首先我们设计一个类,叫什么呢?我喜欢一个动漫很久了,那么就拿这个举例吧 首先还是创建一个类,但是这个和之前的是有区别的,这个是能进行比较的对象。

八大排序算法

妖精的绣舞 提交于 2019-12-07 22:03:57
排序算法可以分为内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存。 常见的内部排序算法有:插入排序、希尔排序、选择排序、冒泡排序、归并排序、快速排序、堆排序、基数排序等。 本文将依次介绍上述八大排序算法。 算法一:插入排序 插入排序示意图 插入排序是一种最简单直观的排序算法,它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。 算法步骤 : 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; } } 算法二:希尔排序 希尔排序示意图 希尔排序 ,也称

总结!python数据结构排序算法的实现

人走茶凉 提交于 2019-12-07 22:03:39
在数据结构中,排序算法是一块重头戏,今天主要来总结一下如何用python语言来实现几大主要的排序算法的实现 1.冒泡排序(Bubble Sort) :就像班主任给本班学生排队一样,每次从一列的开头那个同学往下比较,看下前一个同学和后一个同学的高矮次序,如果第一个同学最高,那他自然会排到最后面去。冒泡排序要做的就是执行多次的遍历,每次找出一个最大值放到最后,类似冒泡。最后排序完成(最大无绝对性,要看个人的实现方法) 程序运作思想: 比较相邻的元素。如果第一个比第二个大(升序),就交换他们两个。 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。这步做完后,最后的元素会是最大的数。 针对所有的元素重复以上的步骤,除了最后一个。 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。 def buddle_sort(mlist): """从大到小冒泡排序的实现""" n = len(mlist) # 总共要遍历的次数 为n-1次 for j in range(0, n-1): # 每次遍历要比较的次数 当第一次时 i的最大值就为n-1 以后每次减少1 for i in range(0, n-1-j): if mlist[i] < mlist[i+1]: mlist[i], mlist[i+1] = mlist[i+1], mlist[i] if __name__

Scala中的Map使用例子

感情迁移 提交于 2019-12-07 19:06:23
Map结构是一种非常常见的结构,在各种程序语言都有对应的api,由于Spark的底层语言是Scala,所以有必要来了解下Scala中的Map使用方法。 (1)不可变Map 特点: api不太丰富 如果是var修饰,引用可变,支持读写 如果是val修饰,引用不可变,只能写入一次值,其后只读 var a :Map[String,Int]=Map( "k1" -> 1 , "k2" -> 2 )//初始化构造函数 a += ( "k3" -> 3 )//添加元素 a += ( "k4" -> 4 )//添加元素 a += ( "k1" -> 100 )//已经存在添加元素会覆盖 a -= ( "k2" , "k1" )//删除元素 // a("k1") = "foo"//不支持 println( a . contains ( "k6" ) )//是否包含某元素 println( a .size )//打印大小 println( a . get ( "k1" ).getOrElse( "default" )) //根据key读取元素,不存在就替换成默认值 a .foreach{ case (e,i) => println(e,i)} //遍历打印1 for ( (k,v)<- a ) println(k,v) //遍历打印2 println( a .isEmpty )//判断是否为空 a

List集合排序Comparable与Comparator实现

时光总嘲笑我的痴心妄想 提交于 2019-12-07 16:55:49
List集合排序Comparable与Comparator实现 前言 需求 Comparable 实现 Comparator 实现 总结 前言 Comparable和 Comparator有什么区别?相信很多同学在面试过程中会经常遇到这个问题。今天我们就结合实际应用来分析这两个对象的区别。 需求 我们的集合里存放了一批砖石王老五的资料,我们需要对这个集合进行排序,排序的规则就按照年少多金来进行排序。什么是年少多金?也就是说我们先比较年龄,年龄小的排在前面,年龄大的排在后面,年龄相同的,千多的排在前面。 Comparable 实现 使用Comparable 排序的需要实现Comparable 接口中的compareTo方法,在User中我们先 @Data public class User implements Comparable < User > { /** * 名字 */ private String name ; /** * 年龄 */ private int age ; /** * 金钱 */ private int money ; public User ( ) { } public User ( String name , int age , int money ) { this . name = name ; this . age = age ; this .

Java 解惑:Comparable 和 Comparator 的区别

只愿长相守 提交于 2019-12-07 16:55:22
读完本文你将了解到: Comparable 自然排序 Comparator 定制排序 总结 Java 中为我们提供了两种比较机制:Comparable 和 Comparator,他们之间有什么区别呢?今天来了解一下。 Comparable 自然排序 Comparable 在 java.lang 包下,是一个接口,内部只有一个方法 compareTo(): public interface Comparable<T> { public int compareTo(T o); } Comparable 可以让实现它的类的对象进行比较,具体的比较规则是按照 compareTo 方法中的规则进行。这种顺序称为 自然顺序 。 compareTo 方法的返回值有三种情况: e1.compareTo(e2) > 0 即 e1 > e2 e1.compareTo(e2) = 0 即 e1 = e2 e1.compareTo(e2) < 0 即 e1 < e2 注意: 1.由于 null 不是一个类,也不是一个对象,因此在重写 compareTo 方法时应该注意 e.compareTo(null) 的情况,即使 e.equals(null) 返回 false,compareTo 方法也应该主动抛出一个空指针异常 NullPointerException。 2.Comparable 实现类重写