迭代器:把取出方式定义在集合的内部,可以直接访问集合内容的元素,取出方式被定义为内部类 每一个容器的数据结构不同,取出的动作细节也不一样,但是有共性的内容:判断和取出,可以将共性抽取 (比喻:电玩城取布娃娃的那个夹子,定义在容器内部) List:元素是有序的,元素可以重复,该集 合体系有索引 常见方法:凡事可以操作角标的方法都是该体系特有的方法 增:add(index,element) addAll(index,Collection) 删:remove(index) 改:set(index,element) 查:get(index) subList(from,to) listItreator(); List集合特有的迭代器,ListIterator是Iterator的子接口,在迭代时不可以通过集合对象的方法操作集合的元素 ListIterator it = al.listIterator it.remove();it.add(); --ArrayList:底层的数据结构是数组结构,查询速度快,但是增删稍慢,线程不同步(效率高)默认10的空表,再加50%延长 file:///C:/Users/liukang/AppData/Local/Temp/ksohtml/wps_clip_image-925.png--LinkedList:底层是链表结构,增删速度很快,查询稍慢(特有方法addFirst();addLast();getFirst()可以获取元素但是不删除removeFirst()获取元素但是删除) 如果集合中没有元素,会出现异常。在JDK1.6出现了替代方法:offerFirst();PeakFirst();polllFirst();没有元素返回null --Vector:底层是数组结构(元老,还没集合的时候就存在了)线程同步(都很慢,被ArrayList替代)100%延长。(枚举是其特有取出方式,和迭代器很像---其实枚举和迭代是一样的,出新的是因为旧的方法名啥的都长故用迭代器) Set:元素是无序(存入和取出的顺序不一定一致),元素不可以重复。 --HashSet:底层数据结构是哈希表(哈希表按哈希值存)保证元素的唯一性,通过两个方法,hashCode和equals。如果HashCode值相同,才会判断equals是否为真 --TreeSet: Set集合的功能和Collection是一致的 |