集合类、迭代器

一、ArrayList类:
线性顺序存储
可以存储重复数据
ArrayList的大小可动态改变,可看成动态数组或Array的复杂版本,而数组大小是不变的
ArrayList可动态增加和减少元素.实现Collection和List接口,可灵活设置数组
大小
构造方法:
1、public ArrayList():默认的构造方法,以默认的大小(16) 初始化内部的数组。
2、public ArrayList(Collection c):用一个Collection对象来构造,并将该集合的元素添加到ArrayList。
3、public ArrayList(int n):用形参指定初始化内部的数组的大小。
常用方法:
1、boolean add(E e) / / 在列表尾追加一个元素。添加成功返回true。
2、 void add(int i, E e) / / 将指定的元素插入此列表中的指定位置。如果此位置有元素,则该元素及后面的所以元素都后移一位。
3、 public E set(int i, E e) / / 替换(覆盖)指定位置的元素。返回值为之前该位置上的元素。
4、boolean contains(Object o) / / 如果此列表中包含指定的元素,则返回 true。
5、boolean remove(Object o) / / 移除列表中首次出现的指定元素。不存在则不动。
6、voidclear() / / 移除列表中的所有元素。
7、int size() / / 返回列表的元素个数。
8、E remove(int i) / / 移除列表中指定位置的元素,返回该元素。
9、int indexOf(Object o) / / 返回列表中首次出现的指定元素的索引,若不存在则返回 -1。
10、 public T[] toArray(T[] a) / / 把列表转换成T类型的数组,如果a的长度满足列表元素个数,则返回该数组a,否则新建一个数组返回。
注:ArrayList是泛型类型,如果不指定类型参数,则可以存放类型不一致的元素,编译器认为都是Object类型。可以指定类型参数E,如果指定了类型参数,在元素类型要一致。
二、 LinkedList:
双向链表
随机访问效率低
随机插入、删除效率高
构造方法:
1、public LinkedList() : 默认的构造方法,构造一个空列表。
2、public LinkedList(Collection c) : 用一个Collection对象来构造列表。按迭代器的返回顺序排列。
常用方法:
1、public boolean add(Object e) / / 在列表尾追加一个元素。
2、void add(int i,E e) / / 在指定位置插入指定元素。
三、 HashSet类
继承于Set接口,不允许有重复元素,元素无序。
HashSet集合在用add()方法添加一个新对象时
会调用对象的hashCode()方法得到对象的散列码,然后根据这个码计算出对象在集合中存储的位置,接着调用equals(Objecto)来比较新项和当前位置已有的所有项是否相等;
– 若相等,则不插入;
– 若不相等时,则在该位置的链表尾部插入该值。
四、 HashMap类
实现了Map接口
Map接口与Collection接口间没有继承关系,是两个不同的接口。
Map接口处理键值映射数据的存储,根据键对数据进行操作。
HashMap实现了Map接口,处理键值映射数据的存储,可以根据键实现对值的操作。
Map类型的对象存储的元素是键和值,即一个元素包含键(Key)和值(Value)两个数据,Key不能重复,Value可以重复。
Map类型的对象添加数据时,也是基于哈希函数来计算存储地址的,在添加元素时,根据Key值来计算Hashcode,得到元素地址,然后把元素存进去。
构造方法
1、HashMap():默认初始容量(16)和默认加载因子(0.75)。
2、HashMap(int initialCapacity):指定容量和默认加载因子(0.75)。
3、 HashMap(int initialCapacity, float loadFactor)指定容量和加载因子。
4、HashMap(Map m)
常用方法
1、 V put( K key, V value) / / 添加元素
2、 void putAll(Map m) / / 复制m
3、V get(Object key) / / 根据key获取value
4、void clear() / / 清空
5、 int size() / / 返回元素个数
6、boolean containsKey(Object key) / / 判断是否包含key
7、 boolean containsValue(Object value) / / 判断是否包含value
8、 V remove(Object key) / / 根据key移除元素,并返回value
9、boolean isEmpty() / / 判断是否为空
Iterator迭代器:
一种设计模式,是一个对象
作用:在于对数据的遍历与数据的内部表示进行分离。
• 常用方法
(1)iterator():Collection对象调用该方法,返回一个Iterator对象。
(2)next(): Iterator对象第一次调用next()方法时,它返回序列的第一个元素,以后再次调用时将获得序列中的下一个元素。
(3)hasNext():Iterator对象调用该方法检查序列中是否还有元素。
(4)remove(): Iterator对象调用该方法删除上次调用next方法获取的元素。
Iterator:是Java迭代器最简单的实现
ListIterator:为List设计,具有更多功能,可从两个方向遍历List,也可从
List中插入和删除元素。
Iterator和ListIterator区别:
(1)ListIterator有add()方法,可向List中添加对象,而Iterator不能。
(2)ListIterator和Iterator都有hasNext()和next()方法,可以实现顺序向后遍历,但是ListIterator有hasPrevious()和previous()方法,可实现逆向(顺序向前)遍历,而Iterator不可以。
(3)ListIterator可以定位当前的索引位置,nextIndex()和previousIndex()可以实现。Iterator没有此功能。
(4)ListIterator和Iterator都可实现删除对象,但是ListIterator可以实现对象的修改,可以利用set()方法实现对LinkedList等List数据结构的操作。Iterator仅能遍历,不能修改。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值