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中关于操作集合的一些新特性,遍历和排序操作的更多相关文章

  1. 09_Java8操作集合的一些新特性

    [使用forEach()结合Lambda表达式遍历集合] public class ForEachDemo { public static void main(String[] args) { Col ...

  2. C#中hashtable的赋值、取值、遍历、排序操作

    一,哈希表(Hashtable)简述 在.NET Framework中,Hashtable是System.Collections命名空间提供的一个容器,用于处理和表现类似key/value的键值对,其 ...

  3. 分享ES6中比较常用又强大的新特性

    前言 es6有很多新东西,但是感觉常用的并不是很多,这里学习记录了一些我自己认为非常常用又强大的新特性. scoping 实用的块级作用域,let x = xxx 可以声明一个块级作用域的局部变量,简 ...

  4. VS2015中C#版本6.0的新特性

    [z]http://www.cnblogs.com/xszjk/articles/6417173.html [z]https://www.cnblogs.com/qixu/p/6047229.html ...

  5. Java8新特性-日期相关类操作

    JDK8以前使用SImpleDateFormate类格式化日期,因为在SImple DateFormate中存在Calendar实例引用,而在caleander中得establish中存在clear( ...

  6. .NET跨平台之旅:借助ASP.NET 5 Beta5的新特性显示CLR与操作系统信息

    今天在 MSDN 博客上看到了 ASP.NET 5 Beta5 的发布消息(详见 ASP.NET 5 Beta5 Now Available),从中知道了 2 个新特性: 1. DNX: New IR ...

  7. PHP7中我们应该学习会用的新特性

    PHP7于2015年11月正式发布,本次更新可谓是PHP的重要里程碑,它将带来显著的性能改进和新特性,并对之前版本的一些特性进行改进.本文小编将和大家一起来了解探讨PHP7中的新特性. 1. 标量类型 ...

  8. Oracle12c中数据删除(delete)新特性之数据库内归档功能

    有些应用有“标记删除”的概念,即不是删除数据,而是数据依然保留在表中,只是对应用不可见而已.这种需求通常通过如下方法实现: 1)  给相关表增加一个另外的列,该列存储标志数据被删除的标记. 2)  给 ...

  9. Java8 新特性 Stream 非短路终端操作

    非短路终端操作 Java8 新特性 Stream 练习实例 非短路终端操作,就是所有的元素都遍厉完,直到最后才结束.用来收集成自己想要的数据. 方法有: 遍厉 forEach 归约 reduce 最大 ...

随机推荐

  1. RabbitMQ--windows10环境下的RabbitMQ安装步骤(转)

    https://blog.csdn.net/weixin_39735923/article/details/79288578

  2. [UGUI]Image源码分析

    unity版本5.3.5 一.属性 1.overrideSprite 脚本对精灵的访问均使用overrideSprite,如果m_OverrideSprite存在就使用m_OverrideSprite ...

  3. web和app的简单测试区别和工具介绍

    首先说一下我对Web自动化测试与CS自动化测试的认识.从宏观对比都是通过脚本自动化完成功能的验证,区别不大.Web测试更为显著的浏览器兼容性.安全,以及与Web技术相关的表单测试.链接测试等,其实都是 ...

  4. Mybatis Generator 生成的mapper只有insert方法

    一般有两种情况 第一种是配置问题可以参考博客 http://blog.csdn.net/angel_xiaa/article/details/52474022 第二种是mysql-connector- ...

  5. 史上最坑 idea 更改代码不生效

    原来, 如果本地多次调整过系统时间,那么gradle 的缓存 会缓存 你的 上次编译时间再未来,那么你再怎么编译,都很难生效,即使删除了生成的字节码目录. 然后invalidate caches/re ...

  6. xhprof 安装详解

    准备工作1.xhprof不支持php7,需要php7以下版本2.php扩展模块xhprof下载地址: http://pecl.php.net/get/xhprof-0.9.4.tgz xhprof安装 ...

  7. c#: 简单的日志管理类(TextWriterTraceListener)

    以c#实现轻量级的日志管理,着实简单,置一静态类记之: /// <summary> /// 日志管理 /// </summary> public static class Lo ...

  8. layui禁止某些导航菜单展开

    官网上查得监听导航菜单的点击 当点击导航父级菜单和二级菜单时触发,回调函数返回所点击的菜单DOM对象: element.on('nav(filter)', function(elem){ consol ...

  9. 333. Largest BST Subtree节点数最多的bst子树

    [抄题]: Given a binary tree, find the largest subtree which is a Binary Search Tree (BST), where large ...

  10. 426. Convert Binary Search Tree to Sorted Doubly Linked List把bst变成双向链表

    [抄题]: Convert a BST to a sorted circular doubly-linked list in-place. Think of the left and right po ...