Collection
List 有序(存取一致) 可重复
ArrayList 数组,查询快,增删慢,不安全,高。
Vector 数组,查询快,增删慢,安全,低。
LinkedList 链表,查询慢,增删快,不安全,高。
Set 无序,唯一
HashSet 哈希算法,不安全,高。
如何保证元素的唯一性?
依赖于两个方法:hashCode(),equals()
TreeSet 二叉树,不安全,高
如何保证元素的唯一性?
A:自然排序。
Comparable,compareTo()
B:比较器接口。
Comparator,compare()
Map
HashMap 哈希算法,不安全,高。
TreeMap 二叉树,不安全,高
Collection 和 Map 的区别:
Collection:单列集合的顶层接口, 数据结构针对元素有效,它的Set体系具有唯一性。
Map:双列,键,键是唯一的。
Collection 和 Collections
Collection :单列集合的顶层接口, 数据结构针对元素有效,它的Set体系具有唯一性。
Collections :操作单列集合的工具类。
HashMap 和 Hashtable 的区别:
HashMap: JDK1.2,线程不安全,效率高。可以存null值和键
Hashtable: JDK1.0 线程安全,效率低。不可以存null值和键
看需求。
看用单列还是双列:
单列:Collection
看是否唯一:
是:Set
看是否排序:
是:TreeSet
否:HashSet
需求不明确,用HashSet
否:List
看增删多还是查询多:
增删多:LinkedList
查询多:ArrayList
需求不明确,用ArrayList
双列:Map:
看是否排序:
是:TreeMap
否:HashMap
需求不明确,用HashMap
3:ArrayList,LinkedList,HashSet,HashMap
存储字符串和自定义对象数据并遍历
4:集合的嵌套遍历
IO流的概述:使用设备之间不同设备的数据传输。
分为两类:
按照流向分(操作是内存和硬盘之间的数据)
输入流:读取文件
输出流:写文件
按照操作分:
字节流:可以操作任何类型的数据
InputStream 字节输入流(读)
OutputStream 字节输出流(写)
字符流:只能操作纯中文的数据。
Reader 字符输入流
Writer 字符输出流
主要是六部记住这六部IO就学会了:
FileInputStream fis = new FileInputStream() //封装输入路径。
FileOutputStream fos = new FileOutputStrem() //封装目的地
int len ; //创建一个int类的值来存储读取的字节。
while((len=fis.read())!=-1){ //创建一个循环来不断的获取字节当len取-1的时候循环停止
fos.write(len); //写文件
}
fis.colse(); //关闭输入流
fos.colse(); //关闭输出流
字符流.两个顶层借口一个是reander 和 writer
转换流之: InputStreamReader 字节流转成字符流的桥梁
因为 FileReader 读取文件的时候,采用的是默认码表(GBK),而我们想要用指定的码表来读,就要用 InputStreamReader
public InputStreamReader(InputStream is, String charSetName); //需要两个参数,一个是字节输入流,一个是 码表
常见的写法:
InputStreamReader isr = new InputStreamReader(new FileInputStream("数据源文件"),"utf-8");
BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream("数据源文件"),"utf-8"));
字符流最好只读文本, 不可以拷贝文件什么的因为涉及到字节和字符之间的转换有的时候会出现乱码的情况.
递归:
概述:就是方法自己调用自己。
弊端:不能调用次数过多,否则会栈内存溢出。
好处:不用知道方法的调用次数。
注意:
1、构造方法不能进行递归调用。
2、递归调用的时候,方法有无返回值均可。 |
|