JavaCoreⅡ
[TOC]
详细的总结一下这章用什么干了什么即可8
第一章 Java8的流库
流遵行了做什么而非怎么做原则
将steam修改为parallelStream就可以让流库以并行的方式来执行过滤和计数
创建流
API P7 P8
对流的处理
Stream<T> filter (Predicate<? super T> predicate)
产生一个流-包含流中所有满足谓词条件的元素
<R> Stream<R> map (Function<? super T,? extends R> mapper)
产生一个流-流中为对所有元素应用了mapper的结果
<R> Stream<R> flatMap (Function<? super T,? extends Stream<? extends R>> mapper)
产生一个流-流中为对所有元素应用了mapper的结果链接在一起(每个结果都是一个流)
抽取子流
API P10
limit()
skip()..
组合流
Steam.concat
流转换
API P11
distinct() 剔除重复元素
sorted()流排序
约简
从流数据中获取答案
是一种终结操作
API P12
Optional类型
Optional<T> 包装器对象
,可以将null包装
API P13 14 16
收集结果
API P22 23
查看流的结果
stream.iterator()//产生旧风格的迭代器,终结操作
stream.foreach()
stream.foreachOrdered() //顺序处理 会部分或全部丧失并行处理的优势
将流收集至数据结构
API 27
toArray()//返回一个Object[]
Collectors.toList() \ toSet()
Collectors.toCollection(数据结构构造函数)
链接操作Collectors.joining("连接符")
Collectors.toMap() 收集到映射表,可处理相同键的值
Function.identity();//一个返回传参的lamda表达式
(t)->t;
群组和分区
下游收集器
API P32
约简操作
处理流中所有元素(假如将所有元素相加)
基本类型流*
API P36 37 38 39
并行流
parallelStream()
parallel()
API P42
第二章 输入与输出
输入输出流
可以从其中读入/==写入==一个字节序列的对象称作输入流/==输出流==
读写字节
read()和write()在执行时都将阻塞,直至字节被读入或写出,这意味着如果流不能被访问当前线程将被阻塞,可以使用in.available()来检测在不阻塞情况下可获取的字节数
API 45 46 49
flush()
close()
流家族
组合输入输出流过滤器
输入流默认情况下不被缓存区缓存,可以这样组合
API P51 52
写入文本
InputStreamReader
写出文本
写出器:PrintWriter
调用println时会自动冲刷
读写二进制文件
DataInput和DataOutput接口
Write/Read
int
4
double
8
boolean
1
short
2
long
8
float
4
char
取决于编码方式
随机访问文件
RandomAccessFile
对象输入输出流与序列化
可序列化类必须实现Serializable接口 或者使用@Serializable注解
API 73 74
操作文件
Path
目录名序列,可加文件名
以根部件开始就是绝对路劲,否则就是相对路径
不必对应存在的文件
组合或解析路径
读写文件
API P89
创建文件和目录
复制移动和删除文件
获取文件信息
API P93
访问目录中的项
若想精细度控制遍历,可查看P95-P97
内存映射文件
将文件加载到内存中,涉及计算时有用,先把文件加载到内存再去计算
文件加锁机制
正则表达式
分割,替换匹配 P117
第三章 XML
XML文档的结构
解析XML
java提供两种XML解析器
树形解析器 DOM ,将XML文档解析为树结构
流机制解析器 列如SAX(Simple API for XML),在读文档时生成响应的事件
验证XML
**DTD **
API P139 P140
简单用法
可以声明储存在外部
如果处理的是相对URL,详见P134 P135
XML Schema
使用XPath定位信息
简单例子: html中的某个元素
详见P149 151
命名空间
流机制解析器
SAX解析器 (事件回调)
StAX
使用SAX解析器
解析时会生成报告事件不会以任何形式存储文档,实际上DOM解析器就是在SAX基础上构建的
DefaultHandler为以下四个接口定义了空的方法,可以使用匿名子类覆盖方法
ContentHandler
DTDHandler
EntityHandler
ErrorHandler
详见P157 158
使用StAX解析器
可以只使用基本循环来迭代所有事件
第五章 JDBC
sql与java之间数据类型的对应
bigint
BIGINT
BINARY
bit
BIT
boolean
char
CHAR
String
decimalmoneysmallmoney
DECIMAL
float
DOUBLE
double
INTEGER
int
imagevarbinary(max)
LONGVARBINARY
byte[]
varchar(max)text
LONGVARCHAR
String
nchar
CHARNCHAR (Java SE 6.0)
String
nvarchar
VARCHARNVARCHAR (Java SE 6.0)
String
nvarchar(max)ntext
LONGVARCHARLONGNVARCHAR (Java SE 6.0)
String
numeric
NUMERIC
java.math.BigDecimal
real
REAL
float
smallint
SMALLINT
short
datetimesmalldatetime
TIMESTAMP
varbinaryudt
VARBINARY
byte[]
varchar
VARCHAR
String
tinyint
TINYINT
short
uniqueidentifier
CHAR
String
xml
LONGVARCHARSQLXML (Java SE 6.0)
StringSQLXML
time
TIME (1)
java.sql.Time (1)
date
DATE
java.sql.Date
datetime2
TIMESTAMP
java.sql.Timestamp
datetimeoffset (2)
microsoft.sql.Types.DATETIMEOFFSET
microsoft.sql.DateTimeOffset
Last updated