集合框架

java集合列主要有以下几种:

list结构的集合类

ArrayList类  LinkedList类  vector类   stack类

Map结构的集合类

HashMap类  hashtable类  

set结构的集合类

HashSet类  TreeSet类

Queue接口

HashMap和Hashtable的区别

Hashmap和Hashtable都是java的集合类,都可以用来存放java对象,这是他们的相同点,但是他们也有区别:

00.历史原因

Hshtable是陈旧的Dictionary类的HashMap是Java。1.2引进的Map接口的一个实现

01.同步性

Hashtable是同步的 ,这个类中的此方法保证了HashTable中的对象是线程安全的。而HashMap则是异步的,因此HashMap中 的对象并不是线程安全的集合那么使用HashMap是一个很好的选择,这些可以避免由于同步带来的不必要的性能开销从而提高效率。

02.值

HashMap可以让你将空值作为一个表的条目的key或value但是HashTable是不能放入空值(null)

ArrayList和Vector的区别

ArrayList和Vector都是java的集合类,都可以用来存放java对象,这是他们的相同点,但他们也有区别:

00.同步性

Vector是同步的,这个类中的一些方法保证Vector中的对象线程安全的。

而ArrayList则是异步的。因此ArrayList中的对象并不是线程安全的,因为同步的要求会执行的效率,所以不需要线程安全的集合,那么使用ArrayList是一个很好的选择,这样可以避免由于同步带来的不必要的开销。

01.数据增长

从内部实现机制来讲ArrayList和Vector都是使用数组(Array)来控制集合中的对象,当向这两种类型增加元素时狗,如果元素的数组超过了内部数组目前的长度,它们都需要扩展内部数组的长度,Vector缺少的情况下自动增长原来一倍的数组长度,ArrayList是原来的50%,所以最后获得的这个集合所占的空间总是比你实际需求的要大,所以如果要在集合保存大量的数据那么使用Vector有一些优势,因为你可以通过设置集合的初始化大小来避免不必要的资源开销

HashSet和TreeSet的区别

HashSet有以下特点

00.不能保证元素的排列顺序,顺序有可能发生变化。

01.不是同步的

02.集合元素可以使null,但只能放入一个null

TreeSet是SortedSet接口的唯一实现类,TreeSet支持两种排序状态,自然排序和定制排序,其中自然排序为默认排序方式。

重要:

00.TreeSet是二叉树实现的TreeSet中的数据是自动排好的,不允许放入空值

01.HsahSet是哈希表实现的,hashSet中的数据是无序的,可以放入null,但只能放入一个null,两者中的值都不能重复,就如数据库中唯一约束。

02.HsahSet要求放入的对象必须实现,HashCode()方法放入的对象,是以Hashcode码作为表示白标识的,而具有相同内容的String对象,hashcode是一样的,所以放入内容不能重复,但是同一个类的对象可以放入不同的实例。

集合框架--------深入讨论

进一步理解集合框架

java的设计这给我们提供了这些集合类,在后面编程中是相当有用的;以下是具体什么时候用集合,

00.如果线程安全:用Vector  HashTable

01.如果不要求线程安全,应使用ArrayList  LinkedList  HashMap

02.如果要求键值对,则使用HashMap,HashTable。

03.如果数据量很大,又要线程安全考虑Vector。

 泛型-------基本概念

00.泛型的基本概念

泛型是Java SE1.5的新特性,泛型的本质是参数化烈性,也就是说所操作的数据类型被指定为一个参数,这种参数类型可以用在类,接口和方法的创建中,分别称为泛型类,泛型接口,泛型方法。

Java语言引入泛型的好处是安全简单在Java SE 1.5之前,没有泛型的情况下,通过对类型Object的引用来实现参数的“任意化”。“任意化”带来的缺点是要做显示的强制烈性转换,而这种类型转换时要求对开发者对实际参数的类型可以预知的情况写进行的,对于强制类型转换,错误的情况,编译器可能不提示错误,在运行的时候才出现异常,这是一个安全隐患。

泛型的好处是在编译的时候检查类型安全,并且所有的强制转换都是自动和隐式的,提高代码的重用率。

什么时候用发那泛范型机制

当定义一个类没有办法确定它的类型或这个类的类型老是变的时候用泛泛型机型,主要解决两个问题:

00.安全提高重用率

01.泛型的优点

000.类型安全

001.向后兼容

002.层次清晰

003.性能较高,用GJ编写的代码可以为java编辑器和虚拟机带来更多的类型信息,这些信息对java程序做进一步优化提供条件。

原文地址:https://www.cnblogs.com/jmsjh/p/7459380.html