Java 容器类

Java 容器类 - 常用概念及常用方法介绍,实现原理以后分析:

 1、数组是存储相同类型的长度固定的数据,通过下标操作符来使用。

 2、容器是存储数据的另一种方式,可以动态存放多个对象,底层实现涉及大量数据结构和算法的内容,所以原理部分以后再详细分析。

 

 Java 容器类框架

 如图: 参考附件

Java 容器类

 

 容器常用接口:

 1Collection:定义了存取对象的方法,它有两个常用子接口

     List接口:存放的元素有序且允许元素有重复

     Set 接口:存放的元素无序且不允许重复

 2Map 接口:定义了存储键值对的方法

 

 List 的一些基本特性:

 有序性:指的是元素的存入顺序和取出顺序一致,每个元素对应一个index

 重复性:指的是equals 方法比较后的结果相等。

 常用方法: 

 add(object)

 add(index,object)

 get(index)

 remove(index)

 indexOf(object)

 size(); 获取容器元素个数

 iterator(); 不同的List 实现类会有不同的Ite内部类。从而实现对容器内元素的遍历操作

 

 List 接口具体实现类

 ArrayList:内部存储采用数组结构实现的List容器

 LinkedList:内存存储采用双向链表结构实现的List容器。

 

 Set 的一些基本特性

 无序性:不保证元素的存入顺序和取出顺序一致。

 重复性:两个对象通过equials 方法比较后相等。

 

 Set接口的具体实现类:

 HashSet:根据哈希码进行存放,存放元素无序、不重复

 LinkedHashSet:存放元素有序

 TreeSet:采用树形链表存储

 对于存放到Set容器中的自定义对象,应该根据情况重写equalshashcode方法,以提高hashtable性能。

 在Set中添加一个新的对象时,会先检查他的hashcode,如果hashcode 不相等则认为是不同的元素,

 hashcode相等时,会再根据equals方法比较相等的元素,相等的话则认为是重复的元素,不再添加,不相等则把元素添加到对应hashcode的桶(数据块)中。

 

 Map相关内容:

 以键值对的方式来进行存储。

 HashMap:内部“键”从用Set存放,不能重复。

 TreeMapHashTable

 

 put(keyvalue)

 get(key)

 remove(key)

 containKey(key)

 containValue(value)

 keySet() // 返回此map 中所有键的Set

 

 

 Iterator 迭代器:

 所有实现了Collection接口的容器类都有一个iterator()方法,用以返回一个实现了Iterator接口的对象

 可以方便地实现对容器内元素的遍历操作。

 hasNext(); 是否有下一个元素

 next(); 返回下一个元素。

 

 容器中的泛型:

 泛型的概念源自于模板,编译器会根据传入的类型参数生成特定类型的类。

 java中就是保存特定类型对象的容器类。在指定类型时,默认是Object类型