一、集合的概念
用来提供一种存储孔吉安可变的存储模型,存储的数据容量可以随时发生改变。
集合体的结构:
接口 | 接口 | 实现类 | 特点 |
Collection 单列集合 | List 集合 | ArrayList | 先进先出排序,元素可重复 |
LinkedList | |||
Set集合 | HashSet | 无序排列,元素可重复 | |
LinkhashSet | 先进先出排序,元素不重复 | ||
TreeSet | 按hashCode值排列,元素不重复 | ||
Map 双列集合 | HashMap | 键+值,元素不重复 |
二、Collection 集合
2.1 Collection集合概述
* 是单列集合的顶层接口,他表示一组对象,这些对象也被称为Collection的元素
* JDK 不提供此接口的任何实现,它是提供更具体的子接口(如 Set、List)实现
2.2 Collection集合的创建对象
因其即集合的最高类,没有提供具体的实现方式,所有需要通过其子类对象进行创建,即采用多态的方式创建对象。
格式: Collection<数据类型> 对象名=new 子类<数据类型>();
eg:Collection array=new ArrayList();
eg: Collection array=new HashSet();
2.3 Collection集合类常用的方法
方法 | 含义 |
boolean add(E e); | 添加元素 |
boolean remove(object o); | 移除指定的元素 |
void clear(); | 清楚集合种所有的元素 |
boolean contains (Object o); | 判断集合种是否存在指定的元素 |
boolean iEmpty(); | 判断集合是否为空 |
int size(); | 计算集合长度(元素个数) |
具体实例,这里采用ArrayList子类创建对象
public class aa { public static void main(String[] args) { Collection<String> arr = new ArrayList<String>(); //利用多态的方式创建对象arr arr.add("a1"); arr.add("a2"); arr.add("a3"); //add添加三个元素 System.out.println(arr); // 输出元素 [a1, a2, a3] arr.remove("a1"); //remove("a1")删除元素为a1 System.out.println(arr); //输出元素[a2, a3] boolean flag=arr.isEmpty(); //isEmpty()判断集合是否一个元素都没有 System.out.println(flag); //输出flag boolean flag1 = arr.contains("a2");//contains("a2")判断是否有元素a2 System.out.println(flag1); //输出true int i=arr.size(); // size() 计算集合中的元素个数 arr.clear(); //clear()删除集合中所有的元素 } }
2.4 Collection 的遍历
因集合中没有索引的概念,所有无法用for循环遍历,对此JAVA提出了迭代器iterator的功能。也可以用增强for的遍历方式
2.4.1 Iterator 迭代器
——迭代器是集合专用遍历方式,它是一个接口。
Iterator <E> iterartor:返回此集合中元素的迭代器,通过集合的iterator方法得到的,所有说迭代器依托于集合中的Iterator方法。
Iterator 迭代器中常用的方法
E next(); 返回迭代中的下一个元素
boolean hasNext():如果迭代具有更多的元素,则返回true,判断是否有元素
实例案例:输入三个元素存入集合,利用迭代器遍历输出 public class aa { public static void main(String[] args) { Collection<String> arr = new ArrayList<String>(); //利用多态的方式创建对象arr arr.add("a1"); arr.add("a2"); arr.add("a3"); //add添加三个元素 Iterator iterator = arr.iterator(); //创建迭代器 while (iterator.hasNext()) { //判断下一个元素是否为null String s=iterator.next(); System.out.println(s); //输出下一个元素 } }
注:迭代器再使用的时候,next每执行一次,地址值就会+1;在使用next()进行遍历时,最好先把值赋值,然后再输出这个值。
2.4.2 增强for功能输出
增强for 格式 for(数据类型 变量名 :集合名)
public class aa { public static void main(String[] args) { Collection<String> arr = new ArrayList<String>(); //利用多态的方式创建对象arr arr.add("a1"); arr.add("a2"); arr.add("a3"); //add添加三个元素 for (String s : arr) //s表示arr中每个元素 System.out.println(s); } }