Java 容器类 - 常用概念及常用方法介绍,实现原理以后分析:
1、数组是存储相同类型的长度固定的数据,通过下标操作符来使用。
2、容器是存储数据的另一种方式,可以动态存放多个对象,底层实现涉及大量数据结构和算法的内容,所以原理部分以后再详细分析。
Java 容器类框架
如图: 参考附件
容器常用接口:
1、Collection:定义了存取对象的方法,它有两个常用子接口
List接口:存放的元素有序且允许元素有重复
Set 接口:存放的元素无序且不允许重复
2、Map 接口:定义了存储键值对的方法
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容器中的自定义对象,应该根据情况重写equals和hashcode方法,以提高hashtable性能。
在Set中添加一个新的对象时,会先检查他的hashcode,如果hashcode 不相等则认为是不同的元素,
hashcode相等时,会再根据equals 方法比较相等的元素,相等的话则认为是重复的元素,不再添加,不相等则把元素添加到对应hashcode的桶(数据块)中。
Map相关内容:
以键值对的方式来进行存储。
HashMap:内部“键”从用Set存放,不能重复。
TreeMap、HashTable
put(key,value)
get(key)
remove(key)
containKey(key)
containValue(value)
keySet(); // 返回此map 中所有键的Set
Iterator 迭代器:
所有实现了Collection接口的容器类都有一个iterator()方法,用以返回一个实现了Iterator接口的对象
可以方便地实现对容器内元素的遍历操作。
hasNext(); 是否有下一个元素
next(); 返回下一个元素。
容器中的泛型:
泛型的概念源自于模板,编译器会根据传入的类型参数生成特定类型的类。
java中就是保存特定类型对象的容器类。在指定类型时,默认是Object类型