集合与io流

来源:互联网 发布:google浏览器for mac 编辑:程序博客网 时间:2024/06/18 11:09

集合

Collection 集合是父接口 包含了ListSet两个子接口

Collection 接口存储一组不唯一,无序的对象

List 接口存储一组不唯一,有序(插入顺序)的对象

Set 接口存储一组唯一,无序的对象

Map接口存储一组键值对象,提供keyvalue的映射。Key无序,唯一。value不要求有序,允许重复。(如果只使用key存储,而不使用value,那就是Set

ArrayList :内部实现是数组,优点遍历和查找,缺点:添加和删除

LinkedList:内部实现是链表,优点添加和删除,缺点:遍历和查找

对于多数据查找和遍历使用ArrayList()

对于多数据添加和删除使用LinkedList(写)

Iterator 迭代器,

可以对所有的集合进行迭代(一个个取出来)

hasNext() // 判断是否有下一位

next()// 取出当前位的值

 

HashSet hash表集合 有点速度快 缺点 无序 LinkedHashSet(完美)

TreeSet 红黑二叉树组成 比ArrayList

<泛型>不特指那种类型,你里面写什么类型就是什么类型

Set集合踢出重复元素如果是引用数据类型需要重写hashCodeequals方法

TreeSet集合要求你提供排序规则 TreeSet中的元素需要实现比较接口(Comparable)重写compareTo方法

Set相对与List没有下标,所以没有get方法,不能使用普通for循环取值(for each,Iterator

Map key-value键值对方式存储数据

key 唯一 无序(set

value 不唯一 无序

HashMap TreeMap LinkedHashMap HashTable

put 添加方法

get(key)取值方法

keySet values entrySet

containsKey containsValue

Collections 集合工具类 提供静态方法如排序,查找,反序,随机排序等

Io

inputStream 输入流 outputStream输出流

从数据源(文件)-> 程序 读 输入流

从程序-> 数据源(文件) 写 输出流

流的分类:

按照方向分:

输入流:InputStreamReader

输出流:OutputStreamWriter

按照发送数据的基本单元分:

字节流:InputStream OutputStream

字符流:ReaderWriter

按照功能分:

节点流:直接可以操作数据源或目的地

包装流:不能操作数据源或目的地,主要是辅助节点流,提高性能和效率,简化操作。

节点流和处理流的关系:

节点流处于io操作的第一线,所有操作必须通过他们进行;处理流可以对节点流进行包装,提高性能或提高程序的灵活性

文件操作流:FileInputStream FileOutputStream

BufferedReader BufferedWriter

二进制文件流:DataInputStream DataOutputStream

对象读写流:ObjectInputStream ObjectOutputStream

Java对象转换为字节序列的过程称为对象的序列化。把字节序列恢复为Java对象的过程称为对象的反序列化。

对象的序列化主要有两种用途

1 持久化: 把对象的字节序列永久地保存到硬盘上,通常存放在一个文件中;比如:休眠的实现。以后服务器session管理,hibernate将对象持久化实现。

2 网络通信:在网络上传送对象的字节序列。比如:服务器之间的数据通信,对象传递

实现和注意事项:

实现接口Serializable Serializable接口中没有任何的方法,实现该接口的类不需要实现额外的方法。

如果对象中的某个属性是对象类型,必须也实现Serializable接口才可以

序列化对静态变量无效

如果不希望某个属性参与序列化,不是将其static,而是transient

串行化保存的只是变量的值,对于变量的任何修饰符,都不能保存

序列化版本不兼容