集合的由来
数组的长度是固定的, 当添加的元素超过了数组的长度, 就需要对数组重新定义
java 内部给我们提供的集合类, 能存储任意对象, 长度是可以改变的. 随着元素的增加而增加, 随着元素的减少而减少
数组和集合的区别
数组既可以存储基本数据类型, 又可以存储引用数据类型, 基本数据类型存储的是值, 引用数据类型存储的是地址值
集合只能存储引用数据类型 (对象 Object), 集合中也可以存储基本数据类型, 但是在存储的时候会自动装箱变成对象 eg:int==>Integer
数组长度是固定的, 不能自动增长
集合的长度是可变的, 可以根据元素的增加而增长
如果元素的个数是固定的, 我们使用数组
如果元素的个数不固定, 我们使用集合
集合 Collection 类:
list: 有序集合, 有索引. 存与取的顺序一样, 可以重复
- ArrayList(数组实现)
- LinkedList(链表实现)
- Vector(数组实现)
Set: 无序集合, 无索引. 存与取的顺序不一样, 不可以重复
- HashSet (哈希算法)
- TreeSet(二叉树算法)
ArrayList 集合中部分数组实现的原理
eg: 有个容量为 10 的初始化数组, 当它不够用的时候, 就会自动生成一个 1.5 倍大的数组, 将值重新赋值后, 把以前的那个小的数组垃圾回收了
Collection 的几个基本方法
boolean add(E e) 添加一个元素
boolean remove(object o) 移除某一个元素
void clear() 清空这个集合
boolean contains(Object o)
boolean isEmpty() 判断这个集合是否为空
int size() 大小
toArray() 将集合转化为数组
boolean addAll(Collection c1) 将 c1 添加进来
boolean removeAll(Collection c1) 移除 this 中还有的 c1 中的所有元素
boolean containsAll(Collection c1) 判断 this 是否包含有 c1 中的所有元素
boolean retainAll(Collection c1) 求并集
遍历一个集合, 我们使用迭代器
迭代器是用来遍历集合中的每一个元素的
方法: hasNext() 和 next()
- package lesson3;
- // 这是一个小例子
- import java.util.ArrayList;
- import java.util.Collection;
- import java.util.Iterator;
- public class null03 {
- public static void main(String[] args) {
- Collection c1 = new ArrayList();// 这不就是多态?
- c1.add("A");
- c1.add("B");
- c1.add("C");
- Iterator iterator = c1.iterator();
- while(iterator.hasNext()){
- Object o = iterator.next();
- System.out.println(o);
- }
- }
- }
来源: http://www.bubuko.com/infodetail-2692476.html