(2011年java基础)集合框架

来源:互联网 发布:网络英文 编辑:程序博客网 时间:2024/05/16 07:11

学习集合框架了自己深有体会,因为自己一直都喜欢看数据结构,所以学起来也得心应手。

如果说要对集合每个类进行总结那就太神了,所以我觉得学习集合框架,首先理解其结构,再懂得API的使用,在以后的项目中慢慢巩固也就好了。

--------------------------------------------------------------------------------------------------------------------------



  • 迭代:迭代器是取出方式,会直接访问集合中的元素,所以将迭代器通过内部类的形式来进行描述。通过容器的iterator()方法获取该内部类的对象。
    为什么会有迭代?因为Collection想统一取出方式,因为继承的对象数据结构不一,所以定义一个取出的接口让子类继承
    而且每一个Collection子类中都有其实现方式,但是为了方便使用集合内部的数据所以集合框架子类就定义了内部类方便对自身集合的数据进行迭代。
    而内部类就必须实现iterator接口。
  • ArrayList,其实Array就是顺序储存结构,元素按照顺序存储,动态分配空间,对于一个顺序存储(数组)的结构,肯定是插入删除慢,修改查询快,因为数据比较容易操纵所以推测List的子类比其他的Collection子类多了一个ListIterator的迭代方式来操纵数据                                                                                                                                                                                                                    
  • LinkedList,其数据结构是链式顺序表,利用指针指向下一个对象,需要加入元素时,只需利用尾指针指向最新元素即可,表中元素空间不连续,特点是插入删除快,修改查询慢,                                                                                                                                                                                       
  • HashSet,其实set对应的数学结构就是集合,所以集合没有相同的元素,所以传入的自定义类的元素,必须先重写equals()方法,用于判断是否相同再传入,其底层结构是hash表,什么是哈希表呢?在数据结构中,为了优化查找效率,就制造了散列技术,就是哈希表,利用哈希函数对元素进行运算,得出值映射到哈希表中,而且为了解决冲突(值相同)所以利用开发地址和拉链法解决冲突,从而实现在理想的状态下查询期望时间为O(1);所以在HashSet中的元素是没有顺序,不重复的。                                                             
  • TreeSet:底层是排序二叉树,利用排序二叉树原理传入的时候判断比父节点大还是小还是等于,当等于的时候放弃传入元素,大于的时候放到右子树,小于的时候放到左子树,所以TreeSet输出的规律是已经排好序的,所以传入的自定义对象必须实现Comparable方法或者创建TreeSet的时候传入比较器Comparator的子类,用于比较                                                                                                                          
  • HashMap和TreeMap :图中显示,Map接口和Collection接口是同级的所以自定义了一套的方法,Map的特点是该集合存储键值对。一对一对往里存。而且要保证键的唯一性。其他的Hash和Tree属性和set的相同。


--------------------------------------------------------------------------------------------------------------------------

类的总结

Collection(接口):集合的父级接口
List(接口),Set(接口) :Collection 中的常用的子接口
ArrayList,LinkedList,Vector (同步的):由List接口衍生的集合类
HashSet,TreeSet,LinkedHashSet :由Set接口衍生的集合类
Itetator(接口):迭代器
Iterable(接口):实现这个接口允许对象成为 "foreach" 语句的目标。俗话:可以使用增强for循环
Collcetions 集合工具类


Map(接口):键值对集合接口
HashMap :底层数据结构hash表
TreeMap :底层数据结构二叉树
HashTable (同步的):底层数据结构为hash表
LinkedHashMap :可以记住存入该集合键值对的内容
Properties :操作配置文件

--------------------------------------------------------------------------------------------------------------------------

共性功能:

Collection定义了集合框架的共性功能。
1,添加
add(e);
addAll(collection);
2,删除
remove(e);
removeAll(collection);
clear();
3,判断。
contains(e);
isEmpty();
4,获取
iterator();
size();
5,获取交集。
retainAll();
6,集合变数组。
toArray();

Map

Map集合:该集合存储键值对。一对一对往里存。而且要保证键的唯一性。
1,添加。
put(K key, V value) 
putAll(Map<? extends K,? extends V> m) 
2,删除。
clear() 
remove(Object key) 
3,判断。
containsValue(Object value) 
containsKey(Object key) 
isEmpty() 
4,获取。
get(Object key) 
size() 
values() 
entrySet() 
keySet()