如果程序运行时并不确定要存储的对象个数时,则可以使用集合框架
Java集合框架是由很多的接口抽象类,实现类组成的,都位于Java 。util包下。
泛型:可以和集合进行组合,来给集合固定的类型使中有滚定的类型才可以存储,使其安全简单,消除代码中的强制转换。
如:List <Integer> input=new ArrayList<Integer>();//则规定了只能存储int类型的参数。
Collection接口(所有集合的根接口)中含有:
List接口 和 Set接口,以及Queue接口,Queue接口不常用。
Collection中存储不唯一的,无序的对象,他不提供直接的实现,
它所代表的是一种规则,
Collection接口提供的方法:
boolean add(E e):向集合框架中存入一个对象,成功true
void clear():移除集合中的所有对象
boolean contains(Object o):判断集合中是否包含某个对象,包含返回true
booeanl isEmpty():判断集合中是否存在元素(是否为null),若不存在元素(若为null),则返回true
boolean remove(Object o):删除集合中某个对象,成功返回true
int size():获取集合长度
List中存储不唯一的,有序的对象,包含ArrayList和LinkedList类
List用某种特定的插入顺序来维护元素顺序,用户可以根据元素的整数索引
来访问元素(从0开始)
void add(E e,int index):向集合框架中指定位置存入一个对象
remove(int index):删除集合中某个位置的某个对象
remove(Object obj):删除集合中某个对象
get(int idnex):获取集合中某个位置的对象
List<T> subList(int s,int e):返回指定区间的某些对象
set(int index,Object obj):修改指定位置的元素
ArrayList实现类:实现List接口,是可变长度数组,以数组方式存储数据,
但是长度不固定,定义泛型集合:List<类型> haha=new ArrayList<类型>();
LinkedList实现类:实线List接口,是以链条形式存储数据,在删除和增加时效率高,
扩展了新的方法:
addFirst(Object):向集合中第一位增加元素
addLast(Object):向集合中最后一位增加元素
removeFirst():删除集合中第一位元素
removeLast():删除集合中最后一位元素
getFirst():获取集合中第一位元素
getLast():获取集合中最后一位元素
ArrayList和LinkedList有何异同?
ArrayList是实现了基于动态数组的数据结构,LinkedList基于链表的数据结构,
ArrayList可以随机定位访问,而LinkedList要一步一步的移动到节点处
对于增加和删除操作,LinkedList比较占优势,可以直接操作,
而ArrayList需要移动数据来填补被删除的对象的空间
Set中存储唯一的,无序的对象, 包含HashSet和TreeSet类
Set接口:存储唯一的,无序的元素,无索引,允许存在null值,但是只能存在一个
HashSet实现类:实现Set接口,底层是哈希码,默认排序方式是哈希码顺序
TreeSet实现类:实现Set接口,可以自定义排序,需要实现Comparable接口,重写compareTo(Object)方法,此方法返回值为0时,则代表两数相等,返回值为正整数时,则代表大于,返回值为负整数时,则代表小于
List和Set在Cllection之上追加了一些方法:
遍历集合方式:
1:普通for循环
for(int i=0;i<集合.size();i++){}
2:增强for循环
for(类型 变量名:集合){}
3:迭代器
Iterator<Penguin> it=集合.iterator();//将集合中的所有内容存入迭代器
while(it.hasNext()) {//hasNext()方法:判断迭代器中是否存在下一个元素
it.next();//next():获取当前元素
}
Map接口:
存储一对键值对,key值对应value值,key值不允许重复(唯一)
void clear():清除集合中的数据
void put(Object key,Object value):向集合添加一个元素
void get(Object key):根据key值取value值
void remove(Object key):根据key值删除value值
Collection values():获取所有values值
Set keySet():获取所有的key值
Collection与Collections的区别:
Collection是集合类的上级接口,继承与他的接口主要有Set 和List.
Collections是针对集合类的一个帮助类,他提供一系列静态方法实现对各种集合的搜索、排序、线程安全化等操作.