去重复示例如下

  • 根据学生的ID属性去重,保留不重复的学生集合

    List<Student> list = Students.stream().collect( collectingAndThen(toCollection(() ->
    new TreeSet<>(comparingLong(Student::getId))), ArrayList::new));

java1.8 stream()list操作用法

扩展,什么是流

Stream 不是集合元素,它不是数据结构并不保存数据,它是有关算法和计算的,它更像一个高级版本的 Iterator。原始版本的 Iterator,用户只能显式地一个一个遍历元素并对其执行某些操作;高级版本的 Stream,用户只要给出需要对其包含的元素执行什么操作,比如 “过滤掉长度大于 10 的字符串”、“获取每个字符串的首字母”等,Stream 会隐式地在内部进行遍历,做出相应的数据转换。

Stream 就如同一个迭代器(Iterator),单向,不可往复,数据只能遍历一次,遍历过一次后即用尽了,就好比流水从面前流过,一去不复返。

而和迭代器又不同的是,Stream 可以并行化操作,迭代器只能命令式地、串行化操作。顾名思义,当使用串行方式去遍历时,每个 item 读完后再读下一个 item。而使用并行去遍历时,数据会被分成多个段,其中每一个都在不同的线程中处理,然后将结果一起输出。

org.springframework.web.util.HtmlUtils 可以实现HTML标签及转义字符之间的转换。

示例代码:


String s = HtmlUtils.htmlEscape("<div>hello world</div><p>&nbsp;</p>");  
System.out.println(s);  
String s2 = HtmlUtils.htmlUnescape(s);  
System.out.println(s2);  

转义后如图所示:
HTML编码转义输出如图所示

json对象直接作为参数在地址栏中会被阶段,在转发到其它应用中无法直接打开,当然将对象的各个属性分开拼接也可以传参,但是稍微麻烦,最简单的方法是通过Base64编码方式传参。

用JS进行Base64编码、解码

从IE10+浏览器开始,所有浏览器就原生提供了Base64编码、解码方法,不仅可以用于浏览器环境,Service Worker环境也可以使用。
方法名就是 atob 和 btoa ,具体语法如下:

window.btoa('hello world') // 编码"aGVsbG8gd29ybGQ="
window.atob("aGVsbG8gd29ybGQ=") // 解码"hello world"

使用开源的base64 js类库

https://links.jianshu.com/go?to=https://github.com/dankogai/js-base64
开源的base64.js ,使用很简单,浏览器引入该JS文件,然后Base64编码这样:

Base64.encode('hello world'); // 编码"aGVsbG8gd29ybGQ="
解码就调用 decode方法,如下:
Base64.decode("aGVsbG8gd29ybGQ="); // 解码'hello world'

微信从今天起开始支持手机号转账,从此不需要加好友也可以直接转账,以后再也没有理由加小姐姐微信了

开启手机号收款功能

支付管理中开启,如下图:
微信开启手机号转账操作图

通过手机号向好友转账

微信钱包——收付款——向银行卡或手机号转账

微信钱包 选择转账方式

输入对方手机号进行转账

微信钱包输入手机号

免责声明
本博客部分内容来自于互联网,不代表作者的观点和立场,如若侵犯到您的权益,请联系[email protected]。我们会在24小时内进行删除。