开篇
数组和集合对比
数组的不足:
1、长度开始时必须指定,而且一旦指定,不能修改,灵活性不够
2、保存的必须为同一类型的元素
3、使用数组进行增删元素的方法比较麻烦
集合
1、可以动态的保存任意多个对象
2、提供一系列操作对象的方法: add、remove、set、get等
3、使用集合添加、删除新元素更加方便。
集合的框架体系
集合主要有两组
单列集合
Collection 接口有两个重要的子接口,List 和 Set ,他们实现的子类都是单列集合
双列集合
Map接口的实现子类,是双列集合,存放形式为 K-V
Collection接口实现类的特点
1、Collection实现子类可以存放不同类型的元素,即每个类型都可以是Object
2、有些Collection的实现类,可以存放重复的元素,有些不可以
3、有些Collection的实现类,是有序的(List),而有些是无序的(Set)
4、Collection接口没有直接的实现子类,是通过他的子接口set和list来实现的。
常用方法
package com.zhang;
import java.util.ArrayList;
import java.util.List;
public class collection_ {
public static void main(String[] args) {
List list = new ArrayList();
// 添加单个元素, 添加的每个元素都是包装类对象
list.add("jack");
list.add(10); // -> list.add(new Integer(10)) -> list.add(Integer.valueOf(10));
list.add(true); // list.add(new Bol)
System.out.println(list);
System.out.println(list.get(2).getClass());
// 删除指定的元素, 返回删除的对象
// System.out.println(list.remove(0)); // 删除第一个元素, 按照下标删除
//按照值删除,删除jack这个元素,
// 如果存在,则删除对应元素,返回true
// 如果有多个该元素,则默认删除第一个
// 如果没有,则返回 false
System.out.println(list.remove("sdjack"));
System.out.println("删除元素"+ list);
// contains 查找元素是否存在
System.out.println(list.contains(true)); // T
System.out.println("list是否包含数字10: " + list.contains(10));
// size: 获取元素个数
System.out.println("list集合元素个数: " + list.size());
// isEmpty : 是否为空
System.out.println("判断list集合是否为空: " + list.isEmpty());
// clear: 清空
// list.clear();
// System.out.println("清空list集合: " + list);
// 添加多个元素
list.addAll(list);
System.out.println("添加多个元素" + list);
//判断多个元素是否存在,必须是全部存在,才返回true,否则返回false
ArrayList arrayList = new ArrayList();
arrayList.add("jack");
arrayList.add(10);
arrayList.add(23);
System.out.println("判断多个元素是否存在" + list.containsAll(arrayList));
System.out.println(list);
// removeAll 一次性删除多个元素,哪个对象对应上,就删除哪个,而且是不论重复的个数,全部删除
list.removeAll(arrayList);
System.out.println("删除多个后的数据为:" + list);
}
}