list 置顶元素_java集合指定元素排序:最前,按照提供的顺序排序?求算法
哈哈哈,不好意思,问了题主那么久...根据我获得需求描述,最后我还是觉得引用新的编程元素来使业务稍微变简单的,我整理到需求应该是:
首先给定一个指定关键字的排序,给出一个字符串列表,对列表进行排序,若字符串列表中包含了关键字,则该这种字符串优先级高,排前面,并且还要根据该字符串所包含的关键字顺序排序,其他没有包含关键字的字符串则靠后,顺序不用关心
所以我引用了新的编程元素,因为给出的orderings是有顺序的,所以只有一个字符串是不能体现这个顺序的,我新增加了一个元素OrderParam
@Getter
@Builder
public class OrderParam{
private String param;
// 值越小,优先级越高
private int order;
}
所以之前的
List orderings= Stream.of("温度", "运行时间").collect(Collectors.toList());
就变为
List orderings= OrderParams.createOrderings("温度", "运行时间");
这里写了一个工具类OrderParams
public class OrderParams{
/**
* 根据字符串数组生成OrderParam集合
* @param params
* @return
*/
public static List createOrderings(String ... params){
return IntStream.range(0, params.length)
.mapToObj(i -> OrderParam.builder().param(params[i]).order(i).build())
.collect(Collectors.toList());
}
}
然后最后的测试类写出来就是这个样子
public class Test {
/**
* 这里思路很简单,orderings是有顺序,给出的target先按照orderings的顺序设定它的优先级,然后直接根据优先级排序就可以了
* @param args
*/
public static void main(String[] args) {
List orderings= OrderParams.createOrderings("温度", "运行时间");
List target= Stream.of("sa", "温度1", "ttttt", "运行时间", "温度", "运行时间ss")
.collect(Collectors.toList());
List result = target.stream()
.map(t -> toOrderParam(orderings, t))
// 这里已经转化成了OrderParam了,所以直接根据OrderParam的order排序即可
.sorted(Comparator.comparing(OrderParam::getOrder))
.map(OrderParam::getParam)
.collect(Collectors.toList());
System.out.println(result);
}
private static OrderParam toOrderParam(List orderings, String t) {
return orderings.stream()
.filter(orderParam -> t.contains(orderParam.getParam()))
.findFirst()
.map(orderParam -> OrderParam.builder().param(t).order(orderParam.getOrder()).build())
// 没有包含在orderings里的,就给一个最低优先级即可
.orElse(OrderParam.builder().param(t).order(Integer.MAX_VALUE).build());
}
}
最后执行结果:
以上就是我的想法。。。问的有点多。。打扰了。。哈哈哈哈
list 置顶元素_java集合指定元素排序:最前,按照提供的顺序排序?求算法相关推荐
- html 浮动窗口置顶,jQuery简单实现页面元素置顶时悬浮效果示例
本文实例讲述了jQuery简单实现页面元素置顶时悬浮效果的方法.分享给大家供大家参考,具体如下: 一.JS Code: $.fn.smartFloat = function () { var posi ...
- android list 替换元素_Java 集合(二)——Set 集合、List 集合和 Collections 工具类...
一.前言 在 Java 集合(一)中我们已经讲了 Collection 集合接口.Iterator 迭代器和泛型,今天我们来讲 Set 集合.List 集合 和 Collections 工具类. 二. ...
- java 集合自定义元素_java集合 collection-list-ArrayList 将自定义对象作为元素存到ArrayList集合中,并去除重复元素。...
import java.util.*;/*将自定义对象作为元素存到ArrayList集合中,并去除重复元素. 比如:存人对象.同姓名同年龄,视为同一个人.为重复元素. 思路: 1,对人描述,将数据封装 ...
- iterator获取当前元素_java集合【5】——— Iterator接口
一.`iterator`接口介绍 二.为什么需要iterator接口 三.iterator接口相关接口 3.1 ListIterator 3.2 SpitIterator 四. iterator在集合 ...
- Python列表(获取列表中指定元素的索引、获取列表中的多个元素、判断指定元素是否在列表中存在、列表元素的遍历、列表元素的增加操作、 列表元素的删除操作、列表元素的修改操作、列表元素的排序操作)
1.获取列表中指定元素的索引 eg1:未指定索引范围查找索引 zyr=['憨憨','憨宝'] print(zyr.index('憨宝')) print(zyr[1]) eg2:在指定索引范围内查找元素 ...
- java中线性表删除元素和删除指定元素_线性表的插入和删除(Java版)
1.线性表的定义: (1).线性表是一种可以在任意位置插入和删除数据元素操作.由n(n≥0)个相同类型数据元素a0, a1,-, an-1组成的线性结构.除了第一个元素没有前驱元素和最后一个元素没有后 ...
- wps里表格中间的字怎么置顶_如何让wps保持窗口最前_怎么把wps窗口置顶
2020-03-04 15:40:25 wps是一款办公软件套装,可以实现办公软件最常用的文字.表格.演示等多种功能.win10系统打开编辑想让wps窗口置顶,也就是显示在其它窗口前面,这样能第一时间 ...
- java 取栈顶元素_java集合系列(7)Stack
这篇文章开始介绍Stack.从名字看他就是一个stack,因此具有数据结构中栈的一般特性(后进先出),平时用起来相对较多一点,但是也是非常简单.这篇文章我们将从源码的角度来分析一下Stack. OK, ...
- java查看链表指定元素_Java 实例 – 链表元素查找
Java 实例 - 链表元素查找 以下实例演示了使用 linkedlistname.indexof(element) 和 linkedlistname.Lastindexof(elementname) ...
最新文章
- 递归 算例一(求一个简单嵌套字典的深度)
- mybatis中使用mysql的模糊查询字符串拼接(like)
- RSS接触 - RSS中的XML文档
- 东北师范大学计算机学院的导师,东北师范大学计算机科学与信息技术学院研究生导师简介-王佳男...
- php 位 逻辑,php – 在Laravel中放置菜单逻辑的位置?
- oracle 表约束非空,oracle--约束(主键、非空、检查)
- Java Object Class boolean equals(Object o)方法与示例
- COPAN为政府机构提供低成本、高效节能的数字归档方案
- tomcat 占用的内存越来越大_智能手机内存为什么越来越大 就这三点原因
- OpenSplice DDS 分布式DDS网络架构(DDS 6.9.0+VS 2013+Qt 5.8.0 )
- devc写Java_与dev c++类似的程序编写软件(适合初学者使用,支持c,c++,java,php,pascal等).pdf...
- 英文版 《UNIX 网络编程.卷一 (UNIX Network Programming .volume1. 3rd edition)》(pdf)高清精校版下载
- 2015计算机二级office真题,2015计算机二级office题库(含答案)
- 机器人编程语言有哪些? 这5大编程语言的优缺点你都了解?
- 此生不戒多巴胺—冲刺总结
- 【子桓说】苏明哲该如何摆脱面子对人生的消极影响?
- 美团内部讲座 | 清华大学崔鹏:因果推断技术最新的发展趋势
- 功能室计算机宣言,教室布置标语(精选多篇)
- python小技巧:一步步教你用Python实现
- 张果老能是鸿蒙时期一蝙蝠,历史书中张果老的故事,一只蝙蝠的传奇
热门文章
- HDU - 7028 Decomposition 无向完全图构造欧拉回路
- CF1000G. Two-Paths(树形dp)
- 吉吉王国(二分+树形dp)
- D - Delete Prime Gym - 102875D
- [ZJOI2011]营救皮卡丘(费用流 + 最短路)
- 线段树/扫描线问卷调查反馈——Rmq Problem / mex(主席树),Boring Queries(二分+st表+主席树),Colorful Squares(扫描线)
- [国家集训队]middle(二分+主席树[中位数思维题])
- CF183D-T-shirtx【dp,贪心】
- YbtOJ#752-最优分组【笛卡尔树,线段树】
- jzoj4223-旅游【并查集】