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 最大 ...
随机推荐
- Android 开发 框架系列 glide-transformations 图片处理基本使用
首先简单的介绍一下Gilde作用范围.Gilde功能十分强大,它可以实现图片处理.图片本地加载.图片网络加载.位图加载.图片内存缓存.图片磁盘缓存.Gif图片加载.使用简单轻松,轻松的后是它强大的心, ...
- Linux 关机、重启 命令
重启命令:1.reboot2.shutdown -r now 立刻重启(root用户使用)3.shutdown -r 10 过10分钟自动重启(root用户使用) 4.shutdown -r 20:3 ...
- upcast 做了什么操作
把子类中仅仅继承而来的成员,赋值给父类. 但是,不会改变虚表!因为这个obj的类型没变. #include <stdio.h> using namespace std; class A{ ...
- C语言实现的反转字符串
这段代码大约是10年前写的了,一直收藏在自己的代码仓库里面,贴出来分享下. 网上也有很多类似的代码,学生们用的比较多,工作中用的很少,权做参考. char* ReverseString(char* s ...
- Deploy, Issue and Transfer Tokens
[Deploy, Issue and Transfer Tokens] 本例使用 eosio.token 合约来尝试发行Token. 1.签出 eosio.contracts. git clone h ...
- day41 mysql详细操作
复习 create table 表名( id int primary key auto_increment, 字段名 数据类型[(宽度) 约束] )engine=innodb charset=utf8 ...
- nginx_server_location对客户资源的辨别规则
语法:location [ = | ~ | ~* | ^~ ] uri { …一组命令… } http://nginx.org/en/docs/http/ngx_http_core_module.ht ...
- windows、Linux同步外网NTP服务器时间
配置 Windows 时间服务以使用外部时间源 要将内部时间服务器配置为与外部时间源同步,请使用以下方法之一: 软件自动配置 Windows 时间服务 若要自动修复此问题,请单击“下载”按钮. 在“ ...
- python中的元组
在python中,元组是不可变类型 可通过以下案例说明: >>> c1 = ['1','2'] >>> c = (1,2,c1) >>> c (1 ...
- [leetcode]256. Paint House粉刷房子(三色可选)
There are a row of n houses, each house can be painted with one of the three colors: red, blue or gr ...