list排序

Java8 集合去重和排序

烈酒焚心 提交于 2019-12-06 05:31:33
java 8 去重和排序 排序的方法 List<Integer> lists = Arrays.asList(1,1,2,3); // 升序 lists.sort(Comparator.comparing(Integer::intValue)); // 降序 lists.sort(Comparator.comparing(Integer::intValue).reversed()); 或者 // 升序 lists.stream().sorted().collect(Collectors.toList()); // 降序 lists.stream().sorted(Comparator.reverseOrder()).collect(Collectors.toList()); import java.util.*; import java.util.stream.Collectors; public class Main { public static void main(String[] args) { List<Integer> lists = Arrays.asList(1,1,2,3); List<Integer> collect = distinctFiled(lists); System.out.println(collect); System.out.println

leetcode.排序.347前k个高频元素-Java

混江龙づ霸主 提交于 2019-12-06 02:59:27
1. 具体题目 给定一个非空的整数数组,返回其中出现频率前 k 高的元素。 示例 1:  输入: nums = [1,1,1,2,2,3], k = 2  输出: [1,2] 示例 2:  输入: nums = [1], k = 1  输出: [1] 2. 思路分析 首先需要统计数组中各不同元素的出现频率,将其存入哈希表中。之后应将元素按照出现的频率排序,取频率最高的前 k 个元素。为了省去排序的时间,考虑创建一个数组将元素填入,该数组下标为元素的出现频率。由于可能存在出现频率相同的元素,所以将数组元素设置为一个列表,形象地说,就是设置若干个桶,每个桶存储出现频率相同的数。最后倒序遍历该数组,取出前 k 个元素作为结果返回。 3. 代码 1 public List<Integer> topKFrequent(int[] nums, int k) { 2 HashMap<Integer,Integer> map = new HashMap<>(); 3 for(int num : nums){ 4 map.put(num, map.getOrDefault(num, 0) + 1); 5 } 6 //桶排序 7 List<Integer>[] buckets = new ArrayList[nums.length + 1]; 8 for(int key : map.keySet())

c#_sort排序函数的返回值

女生的网名这么多〃 提交于 2019-12-06 02:56:42
C# List.Sort函数的返回值 值 含义 小于零 left在right的前面 零 位置不变 大于零 right在left的前面 示例: 本测试结果在unity3d 和纯C#环境下执行。 List<int> list = new List<int>(); list.Add(1); list.Add(4); list.Sort((left,right)=>{ return 1; }); //排序后是:4,1 list.Sort((left,right)=>{ return -1; }); //排序后是:1,4 从小到大排序的返回值写法 list.Sort((left,right)=>{ return left-right; }); 从大到小排序的返回值写法 list.Sort((left,right)=>{ return right-left; }); 来源: https://www.cnblogs.com/zhaoqingqing/p/11760117.html

Comparator 排序报 空指针异常

和自甴很熟 提交于 2019-12-06 02:24:18
List<User> userList = new ArrayList<>(); userList.sort(Comparator.comparing(User::getEmployeeId)) ; 当列表中含有学号为空的元素时,会报空指针异常, 可采用 Comparator.nullsLast(String::compareTo) 解决元素的值为空的问题 结果为 userList.sort(Comparator.comparing(User::getEmployeeId, Comparator.nullsLast(String::compareTo))); 来源: https://www.cnblogs.com/HS-WXL/p/11956910.html

List<map<string,object>> 集合排序

允我心安 提交于 2019-12-06 02:11:17
1 import java.net.SocketException; 2 import java.net.UnknownHostException; 3 import java.util.ArrayList; 4 import java.util.Collections; 5 import java.util.Comparator; 6 import java.util.LinkedHashMap; 7 import java.util.List; 8 import java.util.Map; 9 10 11 public class MapSort { 12 public static void main(String[] args) throws UnknownHostException, SocketException { 13 14 List<Map<String, Object>> listResult = new ArrayList<Map<String, Object>>(); 15 Map<String, Object> map1 = new LinkedHashMap<String, Object>(); 16 map1.put("count", 2); 17 map1.put("name", "abc"); 18 map1.put("key", "acv");

八大排序算法

跟風遠走 提交于 2019-12-06 00:43:59
八大排序是《数据结构》这门大学计算机必修课中非常基础但是特别重要的知识点 常见的八大排序,他们之间关系如下: 一、直接插入排序(Insertion Sort) 直接插入排序的核心思想就是:将数组中的所有元素依次跟前面已经排好的元素相比较,如果选择的元素比已排序的元素小,则交换,直到全部元素都比较过 因此,从上面的描述中我们可以发现,直接插入排序可以用两个循环完成: 第一层循环:遍历待比较的所有数组元素 第二层循环:将本轮选择的元素(selected)与已经排好序的元素(ordered)相比较。 如果:selected > ordered,那么将二者交换。 算法代码: void print(int a[], int n ,int i){ cout<<i <<":"; for(int j= 0; j<8; j++){ cout<<a[j] <<" "; } cout<<endl; } void InsertSort(int a[], int n) { for(int i= 1; i<n; i++){ if(a[i] < a[i-1]){ //若第i个元素大于i-1元素,直接插入。小于的话,移动有序表后插入 int j= i-1; int x = a[i]; //复制为哨兵,即存储待排序元素 a[i] = a[i-1]; //先后移一个元素 while(x < a[j]){ /

贪心思想

旧街凉风 提交于 2019-12-05 22:08:12
贪心思想 保证每次操作都是局部最优的,并且最后得到的结果是全局最优的。 以下题为leetcode原题。 1. 分配饼干 455. Assign Cookies (Easy) 思路描述: 首先对孩子和饼干进行从小到大排序,那么依次比较, 如果饼干大于孩子的胃,则加1, 否则指向下一块饼干。 此方法也可称为双指针法。 代码实现: public static int findContentChildren(int[] g, int[] s) { Arrays.sort(g); Arrays.sort(s); int num = 0; int i = 0, j = 0; while (i < g.length && j < s.length) { //此处如果饼干大于孩子的胃,则num+1 同时, i j同时加1 if (s[j] >= g[i]) { ++num; i++; } //此处 if不成立时候,只需 指向饼干的指针指向下一块饼干 j++; } return num; } 2. 无重叠区间 435. Non-overlapping Intervals (Medium) 思路描述: 题目求的是找到需要移除区间的最小数量,使剩余区间互不重叠; 则求出最多有多少区间互不重叠,总的区间数-最多区间不重叠=移除的最小区间数量; 找出能存放的最大区间个数,则区间的末尾非常重要

python排序参数key以及lambda函数

荒凉一梦 提交于 2019-12-05 20:39:49
首先,lambda格式 lambda x:x+1 , 前面的x相当于传入的 形参 ,后面的相当于 返回值 , 使用起来很简单,只要明白“:”前后的含义即可正确使用。 再来说一下排序等函数中的key,这里以list.sort(key=??)为例, 如果 list=[1, -2, 3, -4, 5],那么 list.sort(key=lambda x:x*-1) 执行后list将变为 [5, 3, 1, -2, -4],( 注意 ,这里虽然看起来是降序没问题, 但是sort 默认是升序 排列的) 很容易看出来这里sort函数遍历了列表,遍历每一项过程中按照 对应项的相反数进行了排序,可以抽象为key这个参数给每一项加了 一个代表“身高”的数值,进而根据这个数值对原有列表进行排序。 所以说,key传入的其实是一个 处理函数,进而 根据处理后数值进行排序 。 来源: https://www.cnblogs.com/ligaofeng/p/11945957.html

选择排序

北城余情 提交于 2019-12-05 19:39:15
选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理如下。首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。 list = [64, 25, 12, 22, 11] def selectSort(lis): for i in range(len(lis)): min_idx = i for j in range(i + 1, len(lis)): if lis[min_idx] > lis[j]: min_idx = j lis[i], lis[min_idx] = lis[min_idx], lis[i] return lis print("排序后的数组:", selectSort(list)) 选择排序 来源: https://www.cnblogs.com/lw1095950124/p/11942051.html

python中列表排序,字典排序,列表中的字典排序

我们两清 提交于 2019-12-05 17:20:14
python中列表排序,字典排序,列表中的字典排序 #-*- encoding=utf-8 -*- # python3代码 import operator 一. 按字典值排序(默认为升序) x = {1:2, 3:4, 4:3, 2:1, 0:0} 1. sorted_x = sorted(x.iteritems(), key=operator.itemgetter(1)) print sorted_x #[(0, 0), (2, 1), (1, 2), (4, 3), (3, 4)] #如果要降序排序,可以指定reverse=True 2. sorted_x = sorted(x.iteritems(), key=operator.itemgetter(1), reverse=True) print sorted_x #[(3, 4), (4, 3), (1, 2), (2, 1), (0, 0)] 二. 或者直接使用list的reverse方法将sorted_x顺序反转 #sorted_x.reverse() 三. 更为常用的方法是,用lambda表达式 3. sorted_x = sorted(x.iteritems(), key=lambda x : x[1]) print sorted_x #[(0, 0), (2, 1), (1, 2), (4, 3), (3, 4)]