哈哈哈,不好意思,问了题主那么久...根据我获得需求描述,最后我还是觉得引用新的编程元素来使业务稍微变简单的,我整理到需求应该是:

首先给定一个指定关键字的排序,给出一个字符串列表,对列表进行排序,若字符串列表中包含了关键字,则该这种字符串优先级高,排前面,并且还要根据该字符串所包含的关键字顺序排序,其他没有包含关键字的字符串则靠后,顺序不用关心

所以我引用了新的编程元素,因为给出的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集合指定元素排序:最前,按照提供的顺序排序?求算法相关推荐

  1. html 浮动窗口置顶,jQuery简单实现页面元素置顶时悬浮效果示例

    本文实例讲述了jQuery简单实现页面元素置顶时悬浮效果的方法.分享给大家供大家参考,具体如下: 一.JS Code: $.fn.smartFloat = function () { var posi ...

  2. android list 替换元素_Java 集合(二)——Set 集合、List 集合和 Collections 工具类...

    一.前言 在 Java 集合(一)中我们已经讲了 Collection 集合接口.Iterator 迭代器和泛型,今天我们来讲 Set 集合.List 集合 和 Collections 工具类. 二. ...

  3. java 集合自定义元素_java集合 collection-list-ArrayList 将自定义对象作为元素存到ArrayList集合中,并去除重复元素。...

    import java.util.*;/*将自定义对象作为元素存到ArrayList集合中,并去除重复元素. 比如:存人对象.同姓名同年龄,视为同一个人.为重复元素. 思路: 1,对人描述,将数据封装 ...

  4. iterator获取当前元素_java集合【5】——— Iterator接口

    一.`iterator`接口介绍 二.为什么需要iterator接口 三.iterator接口相关接口 3.1 ListIterator 3.2 SpitIterator 四. iterator在集合 ...

  5. Python列表(获取列表中指定元素的索引、获取列表中的多个元素、判断指定元素是否在列表中存在、列表元素的遍历、列表元素的增加操作、 列表元素的删除操作、列表元素的修改操作、列表元素的排序操作)

    1.获取列表中指定元素的索引 eg1:未指定索引范围查找索引 zyr=['憨憨','憨宝'] print(zyr.index('憨宝')) print(zyr[1]) eg2:在指定索引范围内查找元素 ...

  6. java中线性表删除元素和删除指定元素_线性表的插入和删除(Java版)

    1.线性表的定义: (1).线性表是一种可以在任意位置插入和删除数据元素操作.由n(n≥0)个相同类型数据元素a0, a1,-, an-1组成的线性结构.除了第一个元素没有前驱元素和最后一个元素没有后 ...

  7. wps里表格中间的字怎么置顶_如何让wps保持窗口最前_怎么把wps窗口置顶

    2020-03-04 15:40:25 wps是一款办公软件套装,可以实现办公软件最常用的文字.表格.演示等多种功能.win10系统打开编辑想让wps窗口置顶,也就是显示在其它窗口前面,这样能第一时间 ...

  8. java 取栈顶元素_java集合系列(7)Stack

    这篇文章开始介绍Stack.从名字看他就是一个stack,因此具有数据结构中栈的一般特性(后进先出),平时用起来相对较多一点,但是也是非常简单.这篇文章我们将从源码的角度来分析一下Stack. OK, ...

  9. java查看链表指定元素_Java 实例 – 链表元素查找

    Java 实例 - 链表元素查找 以下实例演示了使用 linkedlistname.indexof(element) 和 linkedlistname.Lastindexof(elementname) ...

最新文章

  1. 递归 算例一(求一个简单嵌套字典的深度)
  2. mybatis中使用mysql的模糊查询字符串拼接(like)
  3. RSS接触 - RSS中的XML文档
  4. 东北师范大学计算机学院的导师,东北师范大学计算机科学与信息技术学院研究生导师简介-王佳男...
  5. php 位 逻辑,php – 在Laravel中放置菜单逻辑的位置?
  6. oracle 表约束非空,oracle--约束(主键、非空、检查)
  7. Java Object Class boolean equals(Object o)方法与示例
  8. COPAN为政府机构提供低成本、高效节能的数字归档方案
  9. tomcat 占用的内存越来越大_智能手机内存为什么越来越大 就这三点原因
  10. OpenSplice DDS 分布式DDS网络架构(DDS 6.9.0+VS 2013+Qt 5.8.0 )
  11. devc写Java_与dev c++类似的程序编写软件(适合初学者使用,支持c,c++,java,php,pascal等).pdf...
  12. 英文版 《UNIX 网络编程.卷一 (UNIX Network Programming .volume1. 3rd edition)》(pdf)高清精校版下载
  13. 2015计算机二级office真题,2015计算机二级office题库(含答案)
  14. 机器人编程语言有哪些? 这5大编程语言的优缺点你都了解?
  15. 此生不戒多巴胺—冲刺总结
  16. 【子桓说】苏明哲该如何摆脱面子对人生的消极影响?
  17. 美团内部讲座 | 清华大学崔鹏:因果推断技术最新的发展趋势
  18. 功能室计算机宣言,教室布置标语(精选多篇)
  19. python小技巧:一步步教你用Python实现
  20. 张果老能是鸿蒙时期一蝙蝠,历史书中张果老的故事,一只蝙蝠的传奇

热门文章

  1. HDU - 7028 Decomposition 无向完全图构造欧拉回路
  2. CF1000G. Two-Paths(树形dp)
  3. 吉吉王国(二分+树形dp)
  4. D - Delete Prime Gym - 102875D
  5. [ZJOI2011]营救皮卡丘(费用流 + 最短路)
  6. 线段树/扫描线问卷调查反馈——Rmq Problem / mex(主席树),Boring Queries(二分+st表+主席树),Colorful Squares(扫描线)
  7. [国家集训队]middle(二分+主席树[中位数思维题])
  8. CF183D-T-shirtx【dp,贪心】
  9. YbtOJ#752-最优分组【笛卡尔树,线段树】
  10. jzoj4223-旅游【并查集】