java常用的io类_Java常用类、集合、IO-简单版

8a198938097f3fa9ab41f9ccbce8b9f2.png

目录Java常用类、集合、IO常用类Object

Math

Random

File

包装类

Data

String

StringBuffer

StringBuilder

集合框架CollectionList(有序可重复)ArrayList数组 (常用)

LinkedList链表 (常用)

Vector

Stack

Set(无序不可重复)HashSet(常用)

TreeSet

Iterator迭代器

MapHashMap(重点,天天用)

TreeMap

Collections工具类

泛型

IO流字节流

字符流(中文必须用字符流)

处理流

序列化/反序列化

Java常用类、集合、IO

常用类

Object

hashCode()

toString()

clone()

getClass()

notify()

wait()

equals()

Math

常用的数学运算

Random

生成随机数 UUID

File

创建文件

查看文件

修改文件

删除文件

包装类

自动拆箱装箱

Data

Data

SimpleDateFormat yyyy-MM-dd HH:mm:ss

Calendar(建议使用)

String

不可变性 final

操作量较少

StringBuffer

可变长 append()

多线程数据量较大 线程安全 效率高

StringBuilder

可变长

单线程数据量较大 线程不安全 效率低

集合框架

Collection

List(有序可重复)

ArrayList数组 (常用)

add()

remove()

contains()

size() ...

LinkedList链表 (常用)

getFirst() addFirst() removeFirst()

getLast() addLast() removeLast()

pop() push() ...

Vector

Stack

Set(无序不可重复)

HashSet(常用)

TreeSet

Iterator迭代器

Map

HashMap(重点,天天用)

JDK 1.7 数组+链表

JDK 1.8 hash表 = 数组+链表+红黑树

为什么链表长度在大于8的时候变成红黑树?

答:如果链表的长度没有达到这个长度的话,因为红黑树它自身的这种维护,插入的这种维护的开销也是非常大的,因为每次去插入一个元素的时候,很有可能会破坏掉它的平衡。也就是说hashmap的put操作非常多的时候,极有可能会影响插入的性能,因为插入一个元素的话,即有可能会打破它原有的平衡,那么每时每刻它都需要在恢复平衡(也就是红黑树的再平衡,需要左旋右旋,以及重新着色),就非常影响性能。

为什么数组的长度必须是2的指数次幂?

解释:Hashmap为了实现存取高效,要尽量减少碰撞,就是要尽量做到:把数据分配均匀,保证每个链表长度大致相同,我们就需要一个算法来实现;将存入的数据保存到那个链表中的算法;而这个算法实际就是取模:hash%length

? 但是,大家都知道这种运算不如位移运算快。因此,源码中做了优化 hash&(length - 1) 也就是说hash%length = hash&(length - 1)

那为什么是2的n次方呢?

因为2的n次方实际就是1后面n个0,而2的n次方-1,实际就是n个1

例如:长度为8时候,3&(8-1)=3 2&(8-1)=2 不同位置上,不碰撞。而长度是5的时候 3&(5-1)=0 2&(5-1)=0 都在0上,出现了碰撞。所以保证容积是2的n次方,是为了保证再做(length-1)的时候,每个位都能&1,也就是和1.....1111进行与运算。

0.75??

TreeMap

Collections工具类

泛型

约束,避免类型转换之间的问题

IO流

字节流

输出 OutputStream

输入 InputStream

字符流(中文必须用字符流)

Reader

Wirter

处理流

buffer

BufferOutputStream

BufferInputStream

BufferedWriter

BufferedReader

Data

DataOutputStream

DatarInputStream

转换流

InputStreamReader

OutputStreamWriter

Filter

FilterInputStream

FilterOutputStream

FileWriter

FilterReader

Print

PrintStream

PrintWriter

序列化/反序列化

Serializable 接口

transient 关键字 (透明的 某个参数不需要序列化 )

Java常用类、集合、IO-简单版

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值