集合概念
当我们保存一组一样(类型相同)的元素时候,我们应该使用一个容器来存储,就可以采用数组,但是数组存在以下缺点:
1、长度开始时必须指定,一旦指定就不能更改。
2、使用数组进行增加元素的步骤比较麻烦
这时候就可以使用一个更高级的容器“集合”来解决这些问题“
1、可以保存任意多个不同类型的对象,使用方便
2、提供了一系列的操作方法
3、使用集合添加。删除元素时更方便
集合体系概述
java的集合有很多,主要分为两大类
//单列集合
ArrayList arrayList = new ArrayList();
arrayList.add("张三");
arrayList.add("李四");//双列集合
HashMap hashMap = new HashMap();
hashMap.put("1","a");
hashMap.put("2","b");
Collection接口
Collection接口定义了存取一组对象的方法,其子接口Set和List分别定义了存储方式。
Set中的数据对象不可以重复
List中的数据对象有顺序(添加顺序)且可以重复
List接口及实现类
List继承了Collection接口,有三个实现类
ArrayList:数组列表,数据采用数组方式存储
LinkedList:链表
Vector:数组列表,添加同步锁,线程安全的
ArrayLIst实现了长度可变的数组,在内存中分配连续的空间。
ArrayList接口常用的方法
add(E element):添加单个元素
remove(int index):删除指定元素
contains:查找元素是否存在
size:获取元素个数
isEmpty:判断集合是否为空
clear:清空
import java.util.ArrayList;public class Demo1 {public static void main(String[] args) {//单列集合ArrayList arrayList = new ArrayList();//使用add添加元素arrayList.add("张三");arrayList.add(666);arrayList.add(false);System.out.println(arrayList);//remove删除指定元素arrayList.remove(0);//删除第一个元素System.out.println(arrayList);//contains查找某个元素是否存在System.out.println(arrayList.contains(false));//查找false是否在集合之中//size获取集合长度System.out.println(arrayList.size());//isEmpty判断集合是否为空System.out.println(arrayList.isEmpty());//clear 清空集合arrayList.clear();System.out.println(arrayList);}
}
List接口集合迭代
1、for循环遍历
2、增强for循环遍历
3、迭代器遍历(Iterator)
import java.util.ArrayList;
import java.util.Iterator;public class Demo1 {public static void main(String[] args) {ArrayList<String> arrayList = new ArrayList();arrayList.add("a");arrayList.add("b");arrayList.add("c");arrayList.add("d");arrayList.add("e");//使用for循环for (int i = 0; i < arrayList.size(); i++) {System.out.print(arrayList.get(i) + " ");}//使用增强for循环for (String s:arrayList){System.out.print(s + " ");}//使用迭代器Iterator<String> it = arrayList.iterator();while (it.hasNext()){String s = it.next();if ("a".equals(s)){it.remove();}System.out.println(s);}System.out.println(arrayList);}
}
Set接口
Set接口继承了Collection接口
Set中所存储的元素时不重复的,但是是无需的,Set中的元素是没有索引的
Set接口有两个实现类
HashSet:HashSet中的元素不能重复
TreeSet:可以给Set集合中的元素进行指定方式的排序。存储的对象必须实现Comparable接口
Set接口集合迭代
遍历方式:
增强for循环
迭代器遍历
Map接口
HashMap
HashMap中的key值不能重复,排列顺序是不固定的,可以存储一个null的键
TreeMap
TreeMap中所有的元素都保持者某种固定的顺序,如果需要得到一个有序的Map就应该使用TreeMap,key值所在类必须实现Comparable接口。
HashTable
实现了同步;不能存储null的键。