关于 集合框架 Collection的整理

来源:互联网 发布:淘宝火车票怎么退票 编辑:程序博客网 时间:2024/06/02 21:24
关于集合等容器类型
数据结构:栈、队列、二叉树、链表. . .
物理结构:数组、链表

Collection接口
(1)有序的(添加的顺序),可重复的
List接口:实现类有ArrayList、Vector、LinkedList
(2)无序的,不可重复的
Set接口:类似于数学中集合的概念
实现类有HashSet、TreeSet、LinkedHashSet

Map接口:<key , value>
实现类有HashMap、HashTable、LinkedMap、TreeMap、Properties

关于Collection接口:装的东西是对象Object
这是根接口,没有直接实现;只能通过子接口的实现类来实现
add() 基本类型的时候会自动装箱
clear() 清空所有
contains() 依据的是equals方法的比较
isEmpty()
remove() 也是依据equals方法进行比较的,有重复的,只会删除掉第一个
遍历:
foreach实现
使用迭代器对象:
A、获取迭代器对象    Iterator iter = 集合.iterator();
B、三个方法hasNext()、next()、remove()
如果在迭代的同时,直接对集合进行操作的话,集合就发生改变了,跟迭代器获取的就不一致了
next()每次的执行都会讲游标后移一位
是在JDK1.5之后继承了Iteratable接口才支持的迭代;iterator()得到的迭代器对象,实现的Iterator接口

比如ArrayList的迭代器对象时其类中的内部类Itr,这个类实现类Iterator接口

addAll() 把一个集合中的元素都添加进来
containsAll() 判断另一个集合中的元素能否都找到
removeAll()
retainAll() 取两个集合的并集

List的一些方法:
add(index,obj)
get(index)
indexOf() 没有的话返回-1
lastIndexOf()
remove(index)
set(index,obj) 替换指定位置的元素
subList(from,to) 返回一个List

迭代:foreach 和 Iterator都可以
还有ListIterator
ListIterator litr = List的实现.listIterator() //这里边可以传参数指定游标的位置
ListIterator其实也是继承了Iterator,但是功能多了,主要是关于index的一些功能
迭代是可以add了,不过用的不多;也可以set进行替换
还有hasPrevious()、previous() 从后往前找
list.listIterator(list.size()) 把光标移到了最后边
使用nextIndex和previousIndex可以获取索引的信息,不过调用后,游标就会移动

ArrayList:好比是一个动态数组
物理结构是Object[]
具体的实现

Vector,可以new Vector(初始大小 , 每次扩容的大小)

与ArrayList的方法大都基本是一样的
区别是  它是从JDK1.0开始的,而ArrayList是从JDK1.2开始的
支持老版本的迭代方式Enumeration
是线程安全的,方法都由synchronized修饰

LinkedList 链表
里边实际的元素类型是Node,这是它里边的一个内部类

ArrayList适合于查询比较多的情况,LinkedList在插入和删除的时候效率比较高,因为不需要大量的移动

Stack:栈,是Vector的子类,先进后出






原创粉丝点击