jdk8中关于操作集合的一些新特性,遍历和排序操作
jdk8增加了不少新的东西,在集合操作这块,就有如 lamda表达式,stream,sort,optional等新的类,主要涉及遍历和排序等方面,新特性提升了不少性能,我们开发就是要拥抱新事物,守着老食物总会落后,跟不上节奏,下面是自己的新特性的一些demo
public class Java8Test {
private static Logger logger = LoggerFactory.getLogger(Java8Test.class);
public static void java8test(){
List<Integer> list = new ArrayList<>();
list.add(1);
list.add(2);
list.add(3);
list.add(4);
list.add(5);
list.add(6);
/* list.forEach(e ->{
System.out.println(e);
});*/
List<Integer> views = new ArrayList<>();
Optional<List<Integer>> data = Optional.ofNullable(list);
data.get().stream().filter(x -> {
return x>=3;
}).forEach(System.out::println);
}
public static void sort(){
Model model1 = new Model("zhangsan4",18);
Model model2 = new Model("zhangsan5",18);
Model model3 = new Model("zhangsan3",17);
Model model4 = new Model("zhangsan1",19);
Model model5 = new Model("zhangsan2",18);
Model model6 = new Model("zhangsan6",21);
List<Model> sortlist = new ArrayList<>();
sortlist.add(model1);
sortlist.add(model2);
sortlist.add(model3);
sortlist.add(model4);
sortlist.add(model5);
sortlist.add(model6);
sortlist = sortlist.stream().sorted((s1,s2)->{
String a1 = null;
String a2 = null;
Optional<String> num1 = Optional.ofNullable(s1.getName());
Optional<String> num2 = Optional.ofNullable(s2.getName());
if(num1.isPresent() && num2.isPresent()){
a1 = num1.get();
a2 = num2.get();
}
if(a1!=null&&a2!=null){
return a1.compareTo(a2);
}else{
return 0;
}
}).sorted((x1,x2) -> {
Integer a1 = null;
Integer a2 = null;
try {
Optional<Integer> num1 = Optional.ofNullable(x1.getAge());
Optional<Integer> num2 = Optional.ofNullable(x2.getAge());
if(num1.isPresent() && num2.isPresent()){
a1 = num1.get();
a2 = num2.get();
}
} catch (NumberFormatException e) {
e.printStackTrace();
logger.error("转整型异常",e);
}
if (a1!=null&&a2!=null){
return a1.compareTo(a2);
}else{
return 0;
}
}).collect(Collectors.toList());
sortlist.forEach(e ->{
System.out.println(e);
});
}
public static void main(String[] args) {
// java8test();
sort();
}
}
class Model{
private String name;
private int age;
public Model(String name, int age) {
super();
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "Model [name=" + name + ", age=" + age + "]";
}
}
jdk8中关于操作集合的一些新特性,遍历和排序操作的更多相关文章
- 09_Java8操作集合的一些新特性
[使用forEach()结合Lambda表达式遍历集合] public class ForEachDemo { public static void main(String[] args) { Col ...
- C#中hashtable的赋值、取值、遍历、排序操作
一,哈希表(Hashtable)简述 在.NET Framework中,Hashtable是System.Collections命名空间提供的一个容器,用于处理和表现类似key/value的键值对,其 ...
- 分享ES6中比较常用又强大的新特性
前言 es6有很多新东西,但是感觉常用的并不是很多,这里学习记录了一些我自己认为非常常用又强大的新特性. scoping 实用的块级作用域,let x = xxx 可以声明一个块级作用域的局部变量,简 ...
- VS2015中C#版本6.0的新特性
[z]http://www.cnblogs.com/xszjk/articles/6417173.html [z]https://www.cnblogs.com/qixu/p/6047229.html ...
- Java8新特性-日期相关类操作
JDK8以前使用SImpleDateFormate类格式化日期,因为在SImple DateFormate中存在Calendar实例引用,而在caleander中得establish中存在clear( ...
- .NET跨平台之旅:借助ASP.NET 5 Beta5的新特性显示CLR与操作系统信息
今天在 MSDN 博客上看到了 ASP.NET 5 Beta5 的发布消息(详见 ASP.NET 5 Beta5 Now Available),从中知道了 2 个新特性: 1. DNX: New IR ...
- PHP7中我们应该学习会用的新特性
PHP7于2015年11月正式发布,本次更新可谓是PHP的重要里程碑,它将带来显著的性能改进和新特性,并对之前版本的一些特性进行改进.本文小编将和大家一起来了解探讨PHP7中的新特性. 1. 标量类型 ...
- Oracle12c中数据删除(delete)新特性之数据库内归档功能
有些应用有“标记删除”的概念,即不是删除数据,而是数据依然保留在表中,只是对应用不可见而已.这种需求通常通过如下方法实现: 1) 给相关表增加一个另外的列,该列存储标志数据被删除的标记. 2) 给 ...
- Java8 新特性 Stream 非短路终端操作
非短路终端操作 Java8 新特性 Stream 练习实例 非短路终端操作,就是所有的元素都遍厉完,直到最后才结束.用来收集成自己想要的数据. 方法有: 遍厉 forEach 归约 reduce 最大 ...
随机推荐
- 学习笔记:Stage.js(又叫Cut.js)——2D canvas 开发库,游戏方面的
http://piqnt.com/stage.js/ http://www.bootcdn.cn/stage.js/ Stage.js(可能又叫Cut.js)是一个2D HTML5 JavaScrip ...
- SpringData中使用@Modifying注解实现修改操作
通过@Modifying可以实现修改和删除操作 @Modifying @Query("update Person set email = :email where lastName =:la ...
- 触发full gc的条件
1.调用System.gc 2.老年代空间不足 3.永生区空间不足 4.CMS GC时出现promotion failed和concurrent mode failure 5.统计得到的Minor G ...
- python装饰器补漏
以前写过一篇装饰器文章,觉得少了点东西,今天特来补上,也就是带参数的装饰器,上篇文章写的不严谨 def logger(logs=""): def outer(f): def inn ...
- nexus的安装和简介(2)
上传jar包到私服 1. 配置settings.xml 需要在客户端即部署dao工程的电脑上配置 maven环境,并修改 settings.xml 文件,配置连接私服的用户和密码 . 此用户名和密码用 ...
- 获取relatedTarget属性
在做mouseenter与mouseleave的兼容时,我们需要用到事件对象的relatedTarget属性 function getRelatedTarget(e) { var t = e.rela ...
- 零基础爬虫----python爬取豆瓣电影top250的信息(转)
今天利用xpath写了一个小爬虫,比较适合一些爬虫新手来学习.话不多说,开始今天的正题,我会利用一个案例来介绍下xpath如何对网页进行解析的,以及如何对信息进行提取的. python环境:pytho ...
- linux网络日志分析
1.清空日志的技巧 2.访问日志格式分析 3. web日志统计举例
- c# devexpress 多文档界面
学习记录 https://blog.csdn.net/qq_25473787/article/details/81208894?utm_source=blogxgwz0
- mysql 查询结果集按照指定的字段值顺序排序
mysql 查询结果如果不给予指定的order by ,那么mysql会按照主键顺序(innodb引擎)对结果集加以排序,那么最后的排序可能就不是你想要的排序结果. 举个例子,我要按照前端传过来的mo ...