集合
1.概念:
看做一种容器,用来存储对象信息,所有的集合都位于java.util包下。
2.数组和集合的区别
1)数组存储的是相同的数据类型,集合可以存储不同的数据类型。
2)数组可以存储基本类型的数据,也可以存储对象,集合只能存储对象。
3)数组长度是不可变化的,一旦确定,只能存储固定个数的元素;集合可以存储数量不确定的数据。
3.集合中包含的主要接口:java集合中有两个根接口Collection和Map派生出来的。
(1)Collection接口
1)List接口:存储有序的、可重复的元素。(底层实现是使用数组)
实现类 | 特点 |
---|---|
ArrayList | 主要的实现类 |
LinkList | 链表的实现方式,主要进行频繁的删除查找操作 |
Vector | 线程安全的动态数组 |
2)Set接口:存储无序的,不可重复的元素。(添加相同的数据只存储一份)
实现类 | 特点 |
---|---|
HashSet | 主要的实现类 |
LinkedHashSet | HashSet的一个子类,根据元素的hashcode值来决定存储的位置,也是使用链表维护元素的顺序(性能低于hashSet) |
TreeSet | 是SortedSet 接口的实现类,可以保证元素处于排序状态,默认是自然排序 |
自然排序:TreeSet会调用集合元素的compareTo(Object)方法比较元素的大小关系,然后将元素升序排列。
3)Queue接口(队列)
(2)Map接口:存储的数据是键值对<key,value>
key:是不能重复的,使用Set来存储
value:是可以重复的,使用Collection来存储
实现类 | 特点 |
---|---|
HashMap | 主要的实现类 |
LinkedHashMap | … |
TreeMap | … |
Hashtable | 它的子类(Properties:键值对都是String类型) |
层级关系如下:
Collection常用方法
方法 | 含义 |
---|---|
size() | 集合中元素个数 |
add(Object obj) | 添加元素 |
addAll(Collection coll) | 将集合中的所有元素添加到当前集合 |
isEmpty() | 判断集合是否为空 |
clear() | 清空集合中的元素 |
contains(Object o) | 判断集合中是否包含指定元素 |
remove() | 移除集合中的元素 |
removeAll(Collection coll) | 从当前集合删除另外一个集合 |
toArray() | 将集合转化为Object类型数组 |
集合常用方法代码块:
Collection coll = new ArrayList();
//1.size()返回集合中元素的个数
coll.size();
//2.add(Object obj)添加元素
coll.add(123);
coll.add(123);
coll.add("a");
coll.add(new Date());
System.out.println(coll.size());
System.out.println(coll);
//3.addAll(Collection coll):将集合中 的所有元素添加到当前集合
//Arrays有个asList(T ...a);方法将数组转化为集合
Collection coll1 = Arrays.asList(1,2,3,4,5);
coll.addAll(coll1);
System.out.println(coll);
//4.isEmpty():判断集合是否为空
System.out.println(coll.isEmpty());
//5.clear()清空集合中的元素
coll.clear();
System.out.println(coll.isEmpty());
还有下面
Collection coll = new ArrayList();
coll.add(123);
coll.add("tina");
coll.add(new Date());
coll.add("a");
coll.add(new Person("eric",20));
System.out.println(coll);
//6.contains(Object o):判断集合中是否包含指定元素
boolean b1 = coll.contains(123);
System.out.println(b1);
//如果存入集合的元素是自定义对象,需要重写hashCode(),equals() 方法
boolean b2 = coll.contains(new Person("eric", 20));
System.out.println(b2);
//7.remove():移除集合中的元素
boolean b3 = coll.remove("a");
System.out.println(b3);
System.out.println(coll);
//8.removeAll(Collection coll):从当前集合删除另外一个集合
Collection coll1 = new ArrayList();
coll1.add(123);
coll1.add("a");
//coll.removeAll(coll1);
System.out.println(coll);
//9.toArray():将集合转化为Object类型数组
Object[] array = coll.toArray();
System.out.println("-----------------");
for (Object object : array) {
System.out.println(object);
}
System.out.println("---------------------");
//10.iterator()迭代器:可以实现对集合的遍历
//迭代器是一种设计模式,它是一个轻量级对象
//Iterator是一个接口,是集合的迭代器
//hasNext():判断集合中是否存在下一个元素,如果有:返回true
//next():返回集合里的下一个元素
Iterator iterator = coll.iterator();
while(iterator.hasNext()) {
Object object = iterator.next();
System.out.println(object);
}
(3)遍历集合方法
1.使用迭代器
2.使用for循环
3.使用增强for循环,其底层实现是使用迭代器
4.将集合转化为数组(toArray),再进行遍历