Java-Web学习-Java基础-集合I/O
Posted Nortonary
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java-Web学习-Java基础-集合I/O相关的知识,希望对你有一定的参考价值。
Java标准库
集合
Java标准库中提供了大量的集合类,其核心为四个主要的类:
- Collection:单列集合,一次存一个元素
- Map:双列集合,存入的两个元素之间具备映射关系
- Iterator:迭代器
- Collections:虽然和Collection仅一字之差,但是这只是一个 工具类,其提供了许多静态方法用于集合管理。
Collection
Collection由可分为两大类:
- List:有序、可索引、元素可重复
- Set:无序、无索引、元素不可重复
List
List分为三个具体实现:
- ArrayList:数组结构实现,不支持同步。contains和remove依赖equals方法。
- LinkedList:链表结构实现,不支持同步
- Vector:数组结构实现,支持线程同步。contains/remove方法依赖hashCode && equals。
Set
Set分为两个具体实现:
- HashSet:利用Hash表实现,不支持同步,其中元素无序
- LinkedHashSet:继承HashSet,额外维护了有序性
- TreeSet:利用二叉树实现,不支持同步,支持排序
- 自然排序(默认):需要容器内对象实现Comparable接口
- 自定义:利用Collection.sort(set, comparator)传入比较器对象来自定义比较行为
Map
Map有三个具体实现类:
- HashTable:利用Hash表实现,不能存入null键和null值。支持线程同步
- HashMap:利用Hash表实现,允许null键和null值。不支持线程同步
- TreeMap:利用二叉树实现,支持排序。不支持线程同步
Collections
Collections类提供了许多静态方法:
- sort(Collection, Comparator):排序,comparator可选
- fill(Collection, Object):填充
- copy(List a, List b):复制
- shuffle(Collection):随机打乱
- reverse(Collection):反转
- indexOfSubList(List, List):寻找后者在前者中第一次出现的位置
- rotate(List, int):集合中元素看作一个环,旋转指定位
提供的方法非常多,因此如果对集合具有一定操作需求的话可以不急着自己写,先看看标准库有没有提供。
IO流
流操作是数据沟通的重要方式,其主要规律为:
- 明确数据来源和目的地:标准输入?文件?网络?
- 明确数据类型:字节还是字符?
- 明确数据设备:控制台?文件?
Java对数据的操作都是通过流的方式,Java标准库提供了完备的输入输出支持。
流
Java中IO流按类型分为字节流和字符流,又继续按输入输出分为两种:
- 字节流:
- InputStream
- OutputStream
- 字符流:
- Reader
- Writer
字节流
按字节读入/输出,是字节流的基本特征。以InputStream为例,其又分为FileInputStream和BufferInputStream
FileInputStream
字节文件输入流,从文件系统中读取字节形成流。其初始化接受一个File类对象或者由String类表示的一条完整的程序路径。
FileInputStream(File file)
FileInputStream(String name)
BufferInputStream
字节缓冲输入流,提高效率。其接收另一个InputStream类对象并采用缓冲区管理的方式提高其IO效率。
BufferedInputStream(InputStream in, int size);
//size可选,指定缓冲区大小
字符流
字符流将传入的数据解释为字符,按输入输出分为Reader和Writer两个基类。在此之下包括缓冲流、字符转换流。
字符缓冲流
字符缓冲流和字节缓冲流一致,都是使用缓冲区实现效率的提升
字符转换流分为输入和输出两种,接受一个字节流对象,将其转化为一个Reader或Writer对象。严格意义上讲,字符转换流属于字符流,因为其实现了字符流的接口。
其下还包括FileReader和FileWriter,本质上是将FileInputStream / FIleOutputStream进行了转换。
以上是关于Java-Web学习-Java基础-集合I/O的主要内容,如果未能解决你的问题,请参考以下文章
Java-Web学习-Java基础-Java 8 新特性(局部)