性能方面:LinkList是一个双链表,在添加和删除元素时具有比ArrayList更好的性能,但在get与set方面弱于ArrayList。当然,这些对比都是指数据量很大或者操作很频繁。
初始化方面:ArrayList需要指定大小,LinkedList不需要指定大小
以集合来举例,使用泛型的好处是我们不必因为添加元素类型的不同而定义不同类型的集合。如:整型集合类,浮点型集合类,字符串集合类。
我们可以定义一个集合来存放整型、浮点型,字符串型数据,而这并不是最重要的,因为我们只要把底层存储设置了Object即可,添加的数据全部都可向上转型为Object。
更重要的是我们可以通过规则按照自己的想法控制存储的数据类型。
无序、以键值对的形式添加元素,键不能重复,值可以重复。
遍历:先取出保存所有键的Set,再遍历Set即可。
HashMap非同步 线程不安全
Hashtable同步 线程安全 同步既排队
HashMap只允许一条记录的键为NULL
TreeMap不允许键为NULL
分别是 ArrayList、 Vector 和LinkedList 。
按照哈希值来存的所以取数据也是按照哈希值取得。元素的哈希值是通过元素的hashcode 方法来获取的, HashSet 首先判断两个元素的哈希值,如果哈希值一样,接着会比较equals 方法 如果 equls 结果为 true , HashSet 就视为同一个元素。如果 equals 为 false 就不是同一个元素。
拉链法、线性探测法。
泛型类的声明和非泛型类的声明类似,除了在类名后面添加了类型参数声明部分。和泛型方法一样,泛型类的类型参数声明部分也包含一个或多个类型参数,参数间用逗号隔开。一个泛型参数,也被称为一个类型变量,是用于指定一个泛型类型名称的标识符。因为他们接受一个或多个参数,这些类被称为参数化的类或参数化的类型。
会
1.位置不同。throws用在函数上,后边跟的是异常类,可以跟多个异常类。throw用在函数内,后面跟的是异常对象。
2.throw要么和try-catch-finally语句配套使用,要么与throws配套使用。但throws可以单独使用,然后再由处理异常的方法捕获。
1.Error和Exception都是java错误处理机制的一部分,都继承了Throwable类。
2.Exception表示的异常,异常可以通过程序来捕捉,或者优化程序来避免。
3.Error表示的是系统错误,不能通过程序来进行错误处理。