集合的应用 Collection
为容纳一组对象,最适宜的选择应当是数组。而且假如容纳的是一系列 基本数据类型,更是必须采用数组。创建数组,我们未必知道创建的数组的大小,这种情况我们将引进集合这一概念。
Collection接口
接下来我将介绍Collection以及其子接口List和Set
//简单讲解Collection中几个常用的方法
//返回 集合的大小
int size();
//判断集合是否为空
boolean isEmpty();
//判断元素是否存在集合中
boolean contains(Object o);
//将元素添加到集合类
boolean add(E e);
//从集合中移除元素
boolean remove(Object o);
//删除集合中的所以元素
void clear();
List接口
ArrayList和LinkedList 是目前较常用的List实现类
- ArrayList 基于数组实现
ArrayList源码
private static final Object[] DEFAULTCAPACITY_EMPTY_ELEMENTDATA = {};
/**
* Constructs an empty list with an initial capacity of ten.
*/
public ArrayList() {
//初始化默认值
this.elementData = DEFAULTCAPACITY_EMPTY_ELEMENTDATA;
}
ArrayList 一般用法
//定义一个只能容纳Firm类型的List集合 ,<>指定类型
List<Firm> list = new ArrayList();
//添加一个元素
list.add(new Firm());
//获取元素
Firm firm = list.get(0);
//删除元素
list.remove(firm);
//清空集合
list.clear();
- LinkedList 和ArrayList操作一样,只是底层实现不一样,后续将详细讲解
Set接口
Set与List的区别在于,Set里面的元素不重复,List可以重复
HashSet和LinkedHashSet 是目前较常用的Set实现类
- HashSet 无序无重复的集合
//定义一个只能容纳Firm的Sett集合 ,<>指定类型
Set<Firm> set = new HashSet<>();
//添加一个元素
set.add(new Firm());
//获取元素要通过迭代器获取
Firm firm = set.iterator().next();
//删除元素
set.remove(firm);
//清空集合
set.clear();
- LinkedHashSet 有序无重复的集合
Map 接口 (字典)
Map就好像我们日常使用的字典一样。平时我们通过拼音来查找对应的字,抽象出来就是拼音跟字有对应关系,在Map中就变成key => value的对应关系了。
Map常用的方法
//将键值对放进字典内
//同一键,后者覆盖前者
V put(K key, V value);
//根据键获取对应的值
V get(K key);
- HashMap:简单介绍下,hash是散乱的意义,HashMap就是一个散乱的字典,没顺序的
- LinkedHashMap:有序的Map
List 遍历(循环)
//定义一个只能容纳Firm的List集合 ,<>指定类型
List<Firm> list = new ArrayList();
//添加元素
list.add(new Firm("a"));
list.add(new Firm("b"));
list.add(new Firm("c"));
list.add(new Firm("d"));
list.add(new Firm("e"));
//Firm类型 firm变量 :list集合 List遍历的标准形式
for(Firm firm:list){
System.out.println(firm.toString());
}
这章节简单的介绍List的使用,后续实战中会对它有更加深入的讲解