集合类
概念:集合是容器,用以存储对象。
数组可以记录多个相同类型的基本类型数据,类可以记录多个类型不同不同的数据,而集合可以记录多个类型不同的对象的引用。
//数组可以记录多个相同类型的数据
int[] a = {1,2,3};
//类可以记录多个数据不同的数据
class A {
int b;
String c;
}
//集合可以记录多个类型不同的对象
List<T> list = new ArrayList<>;
list.add(1);
list.add("String");
A a = new A();
list.add(a);
集合框架
整个集合框架围绕一组标准接口而设计,这些接口的标准实现类可以被我们使用。
集合
Collection接口
List集合(接口)
ArrayList实现类
LinkedList实现类Set集合(接口)
HashSet实现类
TreeSet实现类Map集合(接口)
HashMap实现类
TreeMap实现类
Collection接口
Collection接口是层次中的根接口,List接口和Set接口都继承了它,因此Collection的方法对于List和Set都是通用的
add(E e) 添加元素;
clear() 清空元素;
remove(E e) 移除元素;
size() 元素数量;
List集合
特点:有序,可以针对性的对元素进行操作;
可重复,通过equals()方法判断是由存在重复。
两个主要方法:
get(int index,E e) 获取指定位置的元素;
set(int index,E e) 用元素替换指定位置的元素;
List 集合的实现类
ArrayList实现类
数据结构:数组
特点:查询快,增删慢,主要用于查询遍历数据,为最常用集合之一;
底层分析:数组结构是有序的元素序列,在内存中开辟一段连续的空间,在空间中存放元素,每个空间都有编号,通过编号可以快速找到相应元素,因此查询快;数组初始化时长度是固定的,要想增删元素,必须创建一个新数组,把源数组的元素复制进来,随后源数组销毁,耗时长,因此增删慢。
LinkedList实现类
数据结构:双向链表;
特点:查询慢,增删快;
底层分析:链表分为单向和双向,就是一条链子和两条链子的区别;多出的那条链子记录了元素的顺序,因此单向链表结构无序,双向链表结构有序;链表结构没有索引,因此查询慢;链表的增删只需在原有的基础上连上链子或切断链子,因此增删快。
//List集合的使用,以ArrayList为例
package Test;
import java.util.*;
public class Main {
public static void main(String[] args) {
// 创建集合
List list =new ArrayList();
//向集合中添加元素
list.add ("a");
list.add("b");
list.add(2);
//将指定索引位置的元素从集合中移除
list.remove(0);
// 新建迭代器
Iterator iterator= list.iterator();
// 遍历集合
while (iterator.hasNext())
{
Object obj=iterator.next();
System.out.println(obj);
}
}
}
/*运行结果:
b
2
*/
List集合小结(感谢phial03的图片)