Java-Web学习-Java基础-集合I/O

Posted Nortonary

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java-Web学习-Java基础-集合I/O相关的知识,希望对你有一定的参考价值。

Java标准库

集合

Java标准库中提供了大量的集合类,其核心为四个主要的类:

  1. Collection:单列集合,一次存一个元素
  2. Map:双列集合,存入的两个元素之间具备映射关系
  3. Iterator:迭代器
  4. Collections:虽然和Collection仅一字之差,但是这只是一个 工具类,其提供了许多静态方法用于集合管理。

Collection

Collection由可分为两大类:

  1. List:有序、可索引、元素可重复
  2. Set:无序、无索引、元素不可重复

List

List分为三个具体实现:

  1. ArrayList:数组结构实现,不支持同步。contains和remove依赖equals方法。
  2. LinkedList:链表结构实现,不支持同步
  3. Vector:数组结构实现,支持线程同步。contains/remove方法依赖hashCode && equals。

Set

Set分为两个具体实现:

  1. HashSet:利用Hash表实现,不支持同步,其中元素无序
    1. LinkedHashSet:继承HashSet,额外维护了有序性
  2. TreeSet:利用二叉树实现,不支持同步,支持排序
    • 自然排序(默认):需要容器内对象实现Comparable接口
    • 自定义:利用Collection.sort(set, comparator)传入比较器对象来自定义比较行为

Map

Map有三个具体实现类:

  1. HashTable:利用Hash表实现,不能存入null键和null值。支持线程同步
  2. HashMap:利用Hash表实现,允许null键和null值。不支持线程同步
  3. TreeMap:利用二叉树实现,支持排序。不支持线程同步

Collections

Collections类提供了许多静态方法:

  1. sort(Collection, Comparator):排序,comparator可选
  2. fill(Collection, Object):填充
  3. copy(List a, List b):复制
  4. shuffle(Collection):随机打乱
  5. reverse(Collection):反转
  6. indexOfSubList(List, List):寻找后者在前者中第一次出现的位置
  7. 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 新特性(局部)

Java基础学习——I/O

Java学习基础- I/O流

Java NIO学习系列五:I/O模型

Java基础学习总结(192)—— 谷歌 Guava 的常用工具集总结

JavaSE入门学习46:文件传输基础之I/O流(Java序列化)