Java基础进阶笔记 - Day02 - 第一章 Collection集合
Java基础进阶笔记 - Day02 - 第一章 Collection集合
系统:Win10
JDK:1.8.0_121
IDE:IntelliJ IDEA 2017.3.7
1.1 集合概述
在前面我们已经学习过集合ArrayList,那么集合到底是什么?
- 集合:集合是java中提供的一种容器,可以用来存储多个数据
集合和数组既然都是容器,它们有什么区别?
- 数组的长度是固定的,集合的长度是可变的
- 数组中存储的是同一类型的元素,可以存储基本数据类型值。集合存储的都是对象,而且对象的类型可以不一致。在开发中一般当对象多的时候,使用集合进行存储
集合可以存储任意对象,如果没有指定泛型,对象将会被提升成Object类型
1.2 集合框架
JavaSE提供了满足各种需求的API,在使用这些API前,先了解其继承与接口操作架构,才能了解何时采用哪个类,以及类之间如何彼此合作,从而达到灵活引用
集合按照其存储结构,可以分为两大类,分别是单列集合java.util.Collection和双列集合java.util.Map,这次我们主要学习Collection集合,Map留到后面学习
- Collection:单列集合的根接口,用于存储一系列符合某种规则的元素,它有两个重要的子接口,分别是java.util.List和java.util.Set
从上面的描述可以看出JDK中提供了丰富的集合类库,为了方便初学者进行系统地学习,接下来通过一张图来描述单列集合类的继承体系
List集合:有索引,可以存储重复元素,可以保证存取顺序
- ArrayList:底层是数组实现的,查询快,增删慢
- LinkedList:底层是链表实现的,查询慢,增删快
- Vector:实现和ArrayList类似,主要是区别是,Vector是线程安全的,但是性能比ArrayList要低
Set集合:无索引,不可存储重复元素
- HashSet:底层是哈希表+单向链表/红黑树实现的,无索引,不可以存储重复元素,存取无序
- LinkedHashSet:继承HashSet,同时维护着一条双重链表定义迭代顺序,无索引,不可以存储重复元素,可以保证存取顺序
- TreeSet:底层是二叉树实现,一般用于排序,可以保证元素的自然顺序
顺序有两个概念,一是按照添加的顺序排列,二是按照自然顺序a-z排列。
1.3 Collection常用功能
Collection是所有单列集合的父接口,因此在Collection中定义了单列集合(List和Set)通用的一些方法,这些方法可用于操作所有的单列集合。方法如下:
- public boolean add(E e):把给定的对象添加到当前集合中
- public boolean contains(E e):判断当前集合中是否包含给定的对象
- public boolean remove(E e):删除出现在集合中的第一个指定的元素-Removes the first occurrence of the specified element from this list
- public int size():返回集合中元素的个数
- public Object[] toArray():把集合中的元素,存储到数组中
- public boolean isEmpty():判断当前集合是否为空
- public void clear():清空集合中所有的元素
方法演示如下:
public class CollectionDemo01 {
public static void main(String[] args) {
// 使用多态创建集合对象
Collection<String> coll = new ArrayList();
// public boolean add(E e):把给定的对象添加到当前集合中
coll.add("张三");
coll.add("张三");
coll.add("李四");
coll.add("王二");
coll.add("麻子");
System.out.println(coll);
// public boolean contains(E e):判断当前集合中是否包含给定的对象
boolean b1 = coll.contains("李四");
System.out.println("集合中是否存在 李四:" + b1);
boolean b2 = coll.contains("赵四");
System.out.println("集合中是否存在 赵四:" + b2);
// public boolean remove(E e):删除出现在集合中的第一个指定的元素
// Removes the first occurrence of the specified element from this list
boolean b3 = coll.remove("张三");
System.out.println("是否已经删除 张三:" + b3);
System.out.println(coll);
// public int size():返回集合中元素的个数
int size = coll.size();
System.out.println("coll集合大小为:" + size);
// public Object[] toArray():把集合中的元素,存储到数组中
Object[] objects = coll.toArray();
// 遍历数组
for (int i = 0; i < objects.length; i++) {
System.out.println(objects[i]);
}
// public boolean isEmpty():判断当前集合是否为空
boolean b4 = coll.isEmpty();
System.out.println("coll集合是否为空:" + b4);
// public void clear():清空集合中所有的元素
coll.clear();
boolean b5 = coll.isEmpty();
System.out.println("coll集合清空所有元素后是否为空:" + b5);
}
}
运行结果:
小贴士:有关Collection中方法不止上面这些,只是上面这些比较常用,其他方法可以查看API文档学习