当前位置: 首页 > news >正文

新网站如何做免费推广怎么做盲盒

新网站如何做免费推广,怎么做盲盒,亚洲做性自拍视频网站,dw网站首页的滚动图片怎么做我们都知道TreeMap可以根据key按字典升序排序。但在某些场景下,我们需要自定义排序规则,为了代码优雅一些,我们也希望在stream中groupingBy时自定义排序规则,就可以参考本文的实现。 1. 使用TreeMap默认的排序规则(按…

我们都知道TreeMap可以根据key按字典升序排序。但在某些场景下,我们需要自定义排序规则,为了代码优雅一些,我们也希望在stream中groupingBy时自定义排序规则,就可以参考本文的实现。

1. 使用TreeMap默认的排序规则(按字典升序排序)

先来看一下默认的排序规则。

/*** 使用TreeMap默认的排序规则(按字典升序排序)*/
private static void sortByDefault() {TreeMap<String, Integer> treeMap = new TreeMap<>();for (int index = 0; index < 5; index++) {treeMap.put("str_" + index, index);}System.out.println("*****TreeMap默认排序规则*****");treeMap.forEach((k, v) -> System.out.println(k + " : " + v));System.out.println();
}

2. 使用自定义排序规则

使用自定义排序规则对TreeMap进行实例化。

/*** 使用自定义排序规则*/
private static void sortByCustom() {Comparator<String> comparator = (String s1, String s2) -> SortEnum.getSortWeightByValue(s1) - SortEnum.getSortWeightByValue(s2);TreeMap<String, Integer> treeMap = new TreeMap<>(comparator);for (int index = 0; index < 5; index++) {treeMap.put("str_" + index, index);}System.out.println("*****TreeMap自定义排序规则*****");treeMap.forEach((k, v) -> System.out.println(k + " : " + v));System.out.println();
}

3. GroupingBy时使用自定义排序规则

一开始直接用TreeMap::new作为groupingBy方法的第二个参数,但是这种办法只能引用TreeMap的无参构造方法。查看groupingBy的入参可以发现,第二个参数是Supplier类型,于是手动实现Supplier,在方法体中传入自定义比较器,然后返回TreeMap对象。

/*** GroupingBy时使用自定义排序规则*/
private static void sortWhenGroupingBy() {List<String> list = new ArrayList<>();for (int index = 0; index < 5; index++) {list.add("str_" + index);}Comparator<String> comparator = (s1, s2) -> SortEnum.getSortWeightByValue(s1) - SortEnum.getSortWeightByValue(s2);// 如果现在外面定义好Supplier,需要声明TreeMap的key和value的类型,否则可能出现类型不兼容的异常// Supplier<TreeMap<String, List<String>>> supplier = () -> new TreeMap<>(comparator);// TreeMap<String, List<String>> treeMap = list.stream().collect(Collectors.groupingBy(Function.identity(), supplier, Collectors.toList()));TreeMap<String, List<String>> treeMap = list.stream().collect(Collectors.groupingBy(Function.identity(), () -> new TreeMap<>(comparator), Collectors.toList()));System.out.println("*****GroupingBy时自定义排序规则*****");treeMap.forEach((k, v) -> System.out.println(k + " : " + v));System.out.println();
}

完整代码

自定义排序权重类

public enum SortEnum {ZERO(0, "str_1"),FIRST(1, "str_0"),SECOND(2, "str_3"),THREE(3, "str_2"),;private int sortWeight;private String value;SortEnum(int sortWeight, String value) {this.sortWeight = sortWeight;this.value = value;}public static int getSortWeightByValue(String value) {for (SortEnum sortEnum : SortEnum.values()) {if (sortEnum.value.equals(value)) {return sortEnum.sortWeight;}}return Integer.MAX_VALUE;}
}

测试代码

import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.TreeMap;
import java.util.function.Function;
import java.util.stream.Collectors;public class TestTreeMap {public static void main(String[] args) {sortByDefault();sortByCustom();sortWhenGroupingBy();}/*** 使用TreeMap默认的排序规则(按字典升序排序)*/private static void sortByDefault() {TreeMap<String, Integer> treeMap = new TreeMap<>();for (int index = 0; index < 5; index++) {treeMap.put("str_" + index, index);}System.out.println("*****TreeMap默认排序规则*****");treeMap.forEach((k, v) -> System.out.println(k + " : " + v));System.out.println();}/*** 使用自定义排序规则*/private static void sortByCustom() {Comparator<String> comparator = (String s1, String s2) -> SortEnum.getSortWeightByValue(s1) - SortEnum.getSortWeightByValue(s2);TreeMap<String, Integer> treeMap = new TreeMap<>(comparator);for (int index = 0; index < 5; index++) {treeMap.put("str_" + index, index);}System.out.println("*****TreeMap自定义排序规则*****");treeMap.forEach((k, v) -> System.out.println(k + " : " + v));System.out.println();}/*** GroupingBy时使用自定义排序规则*/private static void sortWhenGroupingBy() {List<String> list = new ArrayList<>();for (int index = 0; index < 5; index++) {list.add("str_" + index);}Comparator<String> comparator = (s1, s2) -> SortEnum.getSortWeightByValue(s1) - SortEnum.getSortWeightByValue(s2);// 如果现在外面定义好Supplier,需要声明TreeMap的key和value的类型,否则可能出现类型不兼容的异常// Supplier<TreeMap<String, List<String>>> supplier = () -> new TreeMap<>(comparator);// TreeMap<String, List<String>> treeMap = list.stream().collect(Collectors.groupingBy(Function.identity(), supplier, Collectors.toList()));TreeMap<String, List<String>> treeMap = list.stream().collect(Collectors.groupingBy(Function.identity(), () -> new TreeMap<>(comparator), Collectors.toList()));System.out.println("*****GroupingBy时自定义排序规则*****");treeMap.forEach((k, v) -> System.out.println(k + " : " + v));System.out.println();}
}

运行结果:

*****TreeMap默认排序规则*****
str_0 : 0
str_1 : 1
str_2 : 2
str_3 : 3
str_4 : 4*****TreeMap自定义排序规则*****
str_1 : 1
str_0 : 0
str_3 : 3
str_2 : 2
str_4 : 4*****GroupingBy时自定义排序规则*****
str_1 : [str_1]
str_0 : [str_0]
str_3 : [str_3]
str_2 : [str_2]
str_4 : [str_4]
http://www.shuangfujiaoyu.com/news/20058.html

相关文章:

  • 济南网站建设大标网络济南优化网站关键词
  • 义乌seo新网站seo外包
  • 网站优化费用怎么做会计分录公司员工培训方案
  • 网站设计制造全面的seo网站优化排名
  • 上海工商管理局官网百度seo和sem
  • 安徽省六安市疫情最新具体位置消息郑州seo外包服务
  • wpf做网站教程百度知道客服
  • 怎么建立一个网站里面可以查询资料营销策略方案
  • 手机访问pc网站自动跳转手机端网站代码温州网站优化推广方案
  • 上海专业做网站排名营销型网站的推广方法
  • 成年做羞羞的视频网站广告投放代理商加盟
  • 网站防护怎么做螺蛳粉的软文推广
  • 视屏网站的审核是怎么做的网络营销的特点主要包括什么
  • 网站建设中如何兼容所有浏览器推广专员是做什么的
  • 做电影网站考什么软件搜索引擎分哪三类
  • 哪个网站是做红酒酒的男生最喜欢的浏览器推荐
  • 厦门创意互动网站建设微信营销软件群发
  • 福州网站优化强力搜索引擎
  • 长春作网站的那家深圳seo优化公司排名
  • wordpress木马检测什么是seo和sem
  • 淘宝支持做微交易网站吗google关键词
  • 网站开发 问题 关键技术怎么样推广自己的网址
  • 模板网站好还是定制网站好推广专家
  • 网址生成二维码在线百度seo排名优化公司
  • lamp网站开发 pdf站长之家怎么用
  • 做仿站如何获取网站源码郑州seo哪家专业
  • b2b大润发网站大全短视频培训课程
  • 襄阳网站建设营销在线推广
  • 云建站优势天津优化公司
  • 哪一个网站可以做任务拿佣金营销推广策划