Java,
Java,
1:Java String 综述(上篇)
2:Java String 综述(下篇)
3:java基本数据类型传递与引用传递区别详解
4:重写equal()时为什么也得重写hashCode()之深度解读equal方法与hashCode方法渊源
- Java 中的 ==, equals 与 hashCode 的区别与联系
5:Java 内部类综述
6:Java 泛型(Generics) 综述
7:深入理解Java类型信息(Class对象)与反射机制
8:深入理解Java注解类型(@Annotation)
9:深入理解Java枚举类型(enum)
10:序列化
- 10.1:Java序列化的几种方式
- 10.2:[疯狂Java]I/O:其它自定义序列化的方法(transient、writeReplace、readResolve、Externalizable)
11:Java 异常模型综述
12:Java IO
13:Java正则表达式
14:Dom4j完整教程
15:Java集合系列
16:Java8日期和时间API
17:JAVA8之lambda表达式详解,及stream中的lambda使用
18:Java8中的Stream API详解:Stream的背景及使用
Lambda和Stream总结:
Lambda:
要使用lambda第一:必须要知道函数式接口,这包括JDK自带的和自定义的;第二:要知道哪些地方可以支持函数式接口.比如最常见的函数式接口Runnable,然后可以在Thread里面使用函数式接口:
new Thread(() -> System.out.println("I am running")).start();
Stream:
Stream是建立在Lambda的基础上的.使用步骤.
Step1:获取Stream,从Collection和数组获得、从BufferedReader获得、java.util.stream.IntStream.range()等等,但是常用的是使用Collection接口的 .stream()方法得到stream.
Collection.stream();Collection.parallelStream()
Step2:过滤流,中间方法即是一些列对元素进行的操作。譬如过滤、去重、截断等。
例1:用Filter过滤18岁以上的人
List persons = …
Stream personsOver18 = persons.stream().filter(p -> p.getAge() > 18);
例2:用Map把List person转成Map Adult
Stream map = persons.stream().filter(p -> p.getAge() > 18).map(person -> new Adult(person));
Step3:收集结果,通过中间方法,我们对stream的元素进行了统一的操作,但是中间方法得到还是一个stream。要想把它转换为新的集合、或者是统计等。我们需要使用终点方法。
例1:用count统计结果
int countOfAdult=persons.stream()
.filter(p -> p.getAge() > 18)
.map(person -> new Adult(person))
.count();
例2:用collect转换成List.
List adultList= persons.stream()
.filter(p -> p.getAge() > 18)
.map(person -> new Adult(person))
.collect(Collectors.toList());
例3:用collect转换成Map.
Map<Integer , String> idToName = people.collect(Collectors.toMap(Person ::getld, Person:: getName)) ;
关于并行流:
当流操作以并行形式运行时,它应当返回与串行运行时相同的结果。重要的一点
是,操作是无状态的, 并且可以以任意顺序执行。确保所有传递给并行流操作的函数都是线程安全的,实现这个目标的最好方式就是远离可变状态。
反例:假如你想要对字符串流中的所有短单词进行计数.
int[] shortWords = new int(12) ;
// 错误---竞争条件!
words.para11elStream().forEach (s - > { if (s.length () < 12 ) shortWords[s.length())++;});
正确的例子:按长度将字符串进行分组并进行计数
Map<Integer,Long> shortWordCounts =words.parallelStream().filter(s -> s.length() < 10 ).co11ect(groupingBy(String::length ,counting()));
19:java中Object类的方法
20:Java中网络编程重点总结
相关文章
- 暂无相关文章
用户点评