list排序

java实现参数名ASCII字典序排序并MD5加密

狂风中的少年 提交于 2020-01-27 03:06:54
package com.example.demo_java8_new_characteristic.test; import org.apache.commons.lang.StringUtils; import java.security.MessageDigest; import java.util.*; public class MD5Utils { /** * sign 签名 (参数名按ASCII码从小到大排序(字典序)+key+MD5+转大写签名) * @param map * @return */ public static String encodeSign(SortedMap<String,String> map, String key){ if(StringUtils.isEmpty(key)){ throw new RuntimeException("签名key不能为空"); } Set<Map.Entry<String, String>> entries = map.entrySet(); Iterator<Map.Entry<String, String>> iterator = entries.iterator(); List<String> values =new ArrayList(); while(iterator.hasNext()){ Map

LeetCode.937-重新排序日志数组(Reorder Log Files)

两盒软妹~` 提交于 2020-01-27 00:06:40
这是悦乐书的第 358 次更新,第 385 篇原创 01 看题和准备 今天介绍的是 LeetCode 算法题中 Easy 级别的第 220 题(顺位题号是 937 )。你有一系列日志。每个日志都是以空格分隔的单词串。 每个日志中的第一个单词是标识符,由字母数字组成。 字母日志,标识符后面的每个单词只包含小写字母。 数字日志,标识符后面的每个单词只包含数字。 每个日志在其标识符后至少有一个单词。 重新排序日志,以便所有字母日志都在任何数字日志之前。字母日志按字典顺序排序,忽略标识符,在特定的情况下使用标识符。数字日志应按其原始顺序排列。返回日志数组的最终顺序。例如: 输入:["a1 9 2 3 1", "g1 act car", "zo4 4 7", "ab1 off key dog", "a8 act zoo"] 输出:["g1 act car", "a8 act zoo", "ab1 off key dog", "a1 9 2 3 1", "zo4 4 7"] 输入:["a1 9 2 3 1", "g1 act car", "zo4 4 7", "ab1 act car", "a8 act car"] 输出:["a8 act car", "ab1 act car", "g1 act car", "a1 9 2 3 1", "zo4 4 7"] 注意 : 0 <= logs

python 之 python3内置函数

老子叫甜甜 提交于 2020-01-27 00:01:23
一. 简介   python内置了一系列的常用函数,以便于我们使用,python英文官方文档详细说明: 点击查看 , 为了方便查看,将内置函数的总结记录下来。 二. 使用说明   以下是Python3版本所有的内置函数: 1. abs()  获取绝对值 1 >>> abs(-10) 2 10 3 >>> abs(10) 4 10 5 >>> abs(0) 6 0 7 >>> a = -10 8 >>> a.__abs__() 9 10 2. all()  接受一个迭代器,如果迭代器的所有元素都为真,那么返回True,否则返回False 1 >>> tmp_1 = ['python',123] 2 >>> all(tmp_1) 3 True 4 >>> tmp_2 = [] 5 >>> all(tmp_2) 6 True 7 >>> tmp_3 = [0] 8 >>> all(tmp_3) 9 False 3. any()  接受一个迭代器,如果迭代器里有一个元素为真,那么返回True,否则返回False 4. ascii()  调用对象的__repr__()方法,获得该方法的返回值. 5. bin(), 6. oct(), 7. hex()   三个函数功能为:将十进制数分别转换为2/8/16进制。 8. bool()  测试一个对象是True还是False. 9. bytes()

几分钟看完的javaSE基础(三)

为君一笑 提交于 2020-01-26 10:49:19
object 类 object是类层次结构的根类,每个类都使用Object作为超类。 String:概念-->多个字符串组成的字符序列,理解为字符数组; String 的跟 StringBuilder 和 StringBuffer 的区别在于String每次操作都会生成新的String对象,然后将指针指向新的String对象,而StringBuffer和StringBuilder可以在原有对象的基础上进行操作,所以在经常改变字符串内容的情况下,最好不要使用Sting。 StringBuffer和StringBuilder的区别在于StringBuffer是线程安全的,而StringBuilder是非线程安全的。但是StringBuilder却比StringBuffer的性能高,所以在单线程的情况下建议使用StringBuilder,多线程的情况下建议使用StringBuffer. 正则: 正则表达式由两种基本字符组成 原义字符:字符本身即是一个正则\t \n \r \f 元字符:* + ? $ ^ () [ ] {} ... 对正则表达式进行分类:字符类:[ abc] 可以出现abc中的任何一个进行匹配。[^abc] 对不是abc的字符进行匹配 范围类:[a-z] 表示代表a-z中的一个字符表示所有的小写英文 ----- >表示大小写的英文和数字[a-zA-Z0-9] 预定义类:

删除排序数组中的重复项

一个人想着一个人 提交于 2020-01-26 00:55:07
给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。 不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。 示例 1: 给定数组 nums = [1,1,2], 函数应该返回新的长度 2, 并且原数组 nums 的前两个元素被修改为 1, 2。 你不需要考虑数组中超出新长度后面的元素。 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/remove-duplicates-from-sorted-array 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。 方法一: 比如:list nums=[0,0,1,3,6,3] 返回[0,1,3,6] 思路先找到重复元素所处的位置即第0位和第3位,位置为 [0,3]然后删除第0位和第3位,进而得到[0,1,3,6]。编码如下:用到了嵌套循环,即第0位需要和第1-5位比较,然后第1位和第2-5位进行比较,第2位和第3-5位进行比较,然后得到[0,3]。疑问:1、之后不清楚用什么办法删除第0位和第3位。因为用for循环和if语句总会把所有的0和3都删掉,或者删掉了第0位后得到一个新的list[0,1,3,6,3],然后此时第3位变成了第2位,所以导致删错数字。、、、(可参考方法三

007Java集合框架+Collection接口API+Iterator迭代器接口+Set接口+List接口+Map接口+Collections工具类

允我心安 提交于 2020-01-25 08:04:47
一.Java集合框架 Java集合概述(java.util包下) 一方面,面向对象语言对事物的体现都是以对象的形式,为了方便对多个对象的操作,就要对对象进行存储。另 一方面,使用Array存储对象方面具有一些弊端,而Java集合就像一种容器,可以动态地把多个对象的引用放入容器中。 Java集合类可以用于存储数量不等的多个对象,还可用于保存具有映射关系的关联数组。 数组存储对象的特点:Student[] stu = new Student[20];stu[0] = new Student();弊端,一旦创建,其长度不可变。真实的数组存放的对象的个数是不可知的。 Java集合可分为Collection和Map两种体系 Collection接口:Set,元素无序、不可重复的集合,HashSet、LinkedHashSet、TreeSet。List,元素有序,可重复的集合,ArrayList、LinkedList、Vector。 Map接口:具有影射关系“key-value对”的集合。HashMap、LinkedHashMap、TreeMap、Hashtable(子类-Properties)。 二.Collection接口API Collection接口方法 1.size():返回集合中元素的个数 2.add(Object obj):向集合中添加一个元素 3.addAll

【_ 記 】对List中数据进行 条件筛选 去重 排序 大小写转换 排列拼接

旧街凉风 提交于 2020-01-25 02:33:57
对List中数据进行 筛选 去重 排序 大小写转换 排列拼接 代码展示: public static void main ( String [ ] args ) { List < String > list = Arrays . asList ( str ) ; String collect = list . stream ( ) . filter ( i - > ! isNum ( i ) ) . filter ( i - > i . length ( ) >= 16 ) . map ( i - > i . toLowerCase ( ) ) . distinct ( ) . sorted ( Comparator . naturalOrder ( ) ) . collect ( Collectors . joining ( ":" ) ) ; Consumer consumer = System . out : : println ; consumer . accept ( collect ) ; } 使用java8新特性 Stream 流处理 list 数据。 .filter 是保留所有符合()里判断的数据。 .map 是对整体数据进行处理。 .distinct() 去重 .sorted 排序 Consumer consumer = System.out::println ;

Java之集合类

倾然丶 夕夏残阳落幕 提交于 2020-01-24 04:57:33
一、集合类简介 数组是很常用的一种的数据结构,我们用它可以满足很多的功能,但是,有时我们会遇到如下这样的问题: 1、我们需要该容器的长度是不确定的。 2、我们需要它能自动排序。 3、我们需要存储以键值对方式存在的数据。 如果遇到上述的情况,数组是很难满足需求的,接下来本章将介绍另一种与数组类似的数据结构——集合类,集合类在Java中有很重要的意义,保存临时数据,管理对象,泛型,Web框架等,很多都大量用到了集合类。 常见的集合类有这些种: 实现Collection接口的:Set、List以及他们的实现类。 实现Map接口的:HashMap及其实现类,我们常用的有Map及其实现类HashMap,HashTable,List、Set及其实现类ArrayList、HashSet,因为集合类是很大的一块内容,我们不方便把它的全部内容写出来,只能慢慢的增加,希望各位读者有自己想法的,踊跃向我提出,我们共同打造精美的博客,供广大编程爱好者学习,下面我我们通过一个图来整体描述一下: 实现Collection接口的类,如Set和List,他们都是单值元素(其实Set内部也是采用的是Map来实现的,只是键值一样,从表面理解,就是单值),不像实现Map接口的类一样,里面存放的是key-value(键值对)形式的数据。这方面就造成他们很多的不同点,如遍历方式,前者只能采用迭代或者循环来取出值

大数据优化方案----Spark案例优化(一)

China☆狼群 提交于 2020-01-24 02:38:51
“无意中发现了一个巨牛的人工智能教程,忍不住分享一下给大家。教程不仅是零基础,通俗易懂,而且非常风趣幽默,像看小说一样!觉得太牛了,所以分享给大家。点 这里 可以跳转到教程。”。 大数据面试宝典目录,请点击 目录 一、需求 二、样例数据 三、实现方式一 四、实现方式二 自定义分区取 重写排序规则 排序 五、实现方式三 在shuffle是在每一个分区中实现排序 另一种方式实现,使用ShuffleRDD 一、需求 通过分析用户浏览新闻热门话题的日志,统计每个话题下被浏览量最多的用户topN,即按照话题分组,在每一个组内进行排序 二、样例数据 数据格式:话题,时间,被浏览的用户id #高以翔去世# , 2019 - 11 - 29 , u011 #高以翔去世# , 2019 - 11 - 29 , u011 #高以翔去世# , 2019 - 11 - 29 , u011 #高以翔去世# , 2019 - 11 - 29 , u011 #高以翔去世# , 2019 - 11 - 29 , u011 #高以翔去世# , 2019 - 11 - 29 , u008 #高以翔去世# , 2019 - 11 - 29 , u008 #高以翔去世# , 2019 - 11 - 29 , u008 #高以翔去世# , 2019 - 11 - 29 , u008 #高以翔去世# , 2019 - 11

jdk1.8新特性梳理

别说谁变了你拦得住时间么 提交于 2020-01-24 00:13:44
前言 jdk1.8的新特性梳理,方便自己记忆和小伙伴们快速掌握 零、回顾一个抽象类 在jdk1.8之前,因为接口里只能做方法定义不能有方法的实现,因此我们通常会在抽象类里面实现默认的方法{一般这个默认的方法是抽象后公用的方法,不需要每一个继承者都去实现,只需调用即可}。就像下面这样; 在定义的时候; public abstract class AFormula { abstract double calculate ( int a ) ; // 平方 double sqrt ( int a ) { return Math . sqrt ( a ) ; } } 在使用的时候; @Test public void test_00 ( ) { AFormula aFormula = new AFormula ( ) { @Override double calculate ( int a ) { return a * a ; } } ; System . out . println ( aFormula . calculate ( 2 ) ) ; //求平方:4 System . out . println ( aFormula . sqrt ( 2 ) ) ; //求开方:1.4142135623730951 } 一、在接口中提供默认的方法实现(有点像抽象类) 在jdk1.8里面