青岛网站建设在线,sem和seo的关系,wordpress 防黑,wordpress需要升级吗系列文章目录
SpringBootVue3实现登录验证码功能 Java实现发送邮件#xff08;定时自动发送邮件#xff09; 换个角度使用Redis去解决跨域存取Session问题 Redis缓存穿透、击穿、雪崩问题及解决方法 Spring Cache的使用–快速上手篇 更多该系列文章请查看我的主页哦 文章目录…系列文章目录
SpringBootVue3实现登录验证码功能 Java实现发送邮件定时自动发送邮件 换个角度使用Redis去解决跨域存取Session问题 Redis缓存穿透、击穿、雪崩问题及解决方法 Spring Cache的使用–快速上手篇 更多该系列文章请查看我的主页哦 文章目录 系列文章目录前言一、根据Key值排序1.1.数据准备1.2.实现的方法1.3.效果展示 二、根据Value值排序2.1.数据准备2.2.实现的方法2.3.效果展示 三、扩展思路及方法的运用总结 前言 根据一些真实需求遇到的问题需进行排序后进行数据的封装展示。例如现在有一个类型为ListHashMapString,String的无序数据list里的各个map的key值是一样的但是value值是使用a,b,f,d等字母作为真实条件存储的值。展示时需通过这些条件中a,b,c,d,e,f的顺序去展示这些数据。在通过半个多小时的研究后自己写了一个自定义的排序规则。这个规则适用于List套map形式的数据进行排序。在写完根据value排序后顺便把根据每个key排序的情况进行了扩充。 一、根据Key值排序
1.1.数据准备 如下代码所示准备自定义排序规则的strlist和需要进行排序的list2 这里的strlist是排序规则可以根据你想要的顺序进行排序展示添加的顺序即为展示的顺序。像这里我是key为a的排前b,c,d,e,f的顺序排序各个map。这里的list2是在列表里准备了各个map的key和value值。当然这是以key值排序所以key是属于自定义排序规则内的值。 //自定义排序规则 添加的顺序值就是排序的顺序ArrayListString strlistnew ArrayList();strlist.add(a);strlist.add(b);strlist.add(c);strlist.add(d);strlist.add(e);strlist.add(f);//根据key排序ArrayListHashMapString, String list2 new ArrayList();HashMapString, String hashMap5 new HashMapString, String();hashMap5.put(a,这是a);list2.add(hashMap5);HashMapString, String hashMap6 new HashMapString, String();hashMap6.put(c,这是c);list2.add(hashMap6);HashMapString, String hashMap7 new HashMapString, String();hashMap7.put(f,这是f);list2.add(hashMap7);HashMapString, String hashMap8 new HashMapString, String();hashMap8.put(b,这是b);list2.add(hashMap8);HashMapString, String hashMap9 new HashMapString, String();hashMap9.put(d,这是d);list2.add(hashMap9);1.2.实现的方法 实现需将上述准备的list作为入参传入该方法进行操作首先需定义一个新的list1用来封装排序好的数据。然后是进行循环外层为自定义规则的值内层为排序前的数据去循环的过程中根据自定义排序的strlist进行依次判断list(排序前的数据)是否存在自定义的值存在即放到新的list1中然后将排序好的list1返回。 提示这里的最内层循环我的每个map都存放的一个key,value所以直接取值判断。如放多个值需在最内层中写if判断根据哪个值进行对该map排序。这里在扩展中会说。。。
public static String sortKey(ListHashMapString,String list,ArrayListString strlist) {ArrayListHashMapString, String list1 new ArrayList();String keyc;for (int i 0; i strlist.size(); i) {for (int j 0; j list.size(); j) {HashMapString, String map1 list.get(j);//取值SetString keys map1.keySet();for (String key : keys) {//根据map里的哪个值排序 加if判断即可keyckey;}if(strlist.get(i).equals(keyc)){list1.add(map1);}}}return list1.toString();}1.3.效果展示 打印代码如下 System.out.println(根据map的key排序前list2);String sortKey sortKey(list2,strlist);System.out.println(根据map的key排序后sortKey);效果图展示如下图所示可看到根据key值排序前后的不同。
二、根据Value值排序
2.1.数据准备 如下代码所示准备自定义排序规则的strlist和需要进行排序的list 这里的strlist是排序规则可以根据你想要的顺序进行排序展示添加的顺序即为展示的顺序。像这里我是value为a的排前b,c,d,e,f的顺序排序各个map。这里的list是在列表里准备了各个map的key和value值。当然这是以Value值排序所以Value是属于自定义排序规则内的值。 //自定义排序规则 添加的顺序值就是排序的顺序ArrayListString strlistnew ArrayList();strlist.add(a);strlist.add(b);strlist.add(c);strlist.add(d);strlist.add(e);strlist.add(f);//模拟数据listHashMapString,StringArrayListHashMapString, String list new ArrayList();HashMapString, String hashMap new HashMapString, String();hashMap.put(type,a);list.add(hashMap);HashMapString, String hashMap1 new HashMapString, String();hashMap1.put(type,c);list.add(hashMap1);HashMapString, String hashMap3 new HashMapString, String();hashMap3.put(type,f);list.add(hashMap3);HashMapString, String hashMap2 new HashMapString, String();hashMap2.put(type,b);list.add(hashMap2);HashMapString, String hashMap4 new HashMapString, String();hashMap4.put(type,d);list.add(hashMap4);2.2.实现的方法 实现需将上述准备的list作为入参传入该方法进行操作首先需定义一个新的list1用来封装排序好的数据。然后是进行循环外层为自定义规则的值内层为排序前的数据去循环的过程中根据自定义排序的strlist进行依次判断list(排序前的数据)是否存在自定义的值存在即放到新的list1中然后将排序好的list1返回。 如果kay排序看懂了相信value也能够轻松的看懂下述代码。 提示这里的最内层循环我的每个map都存放的一个key,value所以直接取值判断。如放多个值需在最内层中写if判断根据哪个值进行对该map排序。这里在扩展中会说。。。
public static String sortValue(ListHashMapString,String list,ArrayListString strlist) {ArrayListHashMapString, String list1 new ArrayList();for (int i 0; i strlist.size(); i) {for (int j 0; j list.size(); j) {HashMapString, String map1 list.get(j);String type map1.get(type);if(strlist.get(i).equals(type)){list1.add(map1);}}}return list1.toString();}2.3.效果展示 打印代码如下 System.out.println(根据map的value排序前list);//根据map值排序String sortValue sortValue(list,strlist);System.out.println(根据map的value排序后sortValue);效果图展示如下图所示可看到根据key值排序前后的不同。
三、扩展思路及方法的运用 对于方法中上述提到的如果map中有多个值的情况需先定义哪个值作为排序的值。 例如sortKey时如果根据的是map中key为“score”进行排序那么这里需这样写如下述代码所示 //取值SetString keys map1.keySet();for (String key : keys) {//根据map里的哪个值排序 加if判断即可if(score.equals(key)){keyckey;}}例如sortValue时如果根据的是map中key为“type”的value进行排序那么这里需这样写如下述代码所示 总结 对于value的排序是我在工作中根据真实需求进行的编写在编写的过程中也有很多想法。但在有限的时间内还是选择了这种比较耗时的算法。key的排序是我临时想到编写的也是给大家一个思路。如有在value排序中比我这种方法好的想法或者代码欢迎在评论区讨论我们一起交流学习~