Java新篇章之集合
day-08
集合
初始集合
集合的优点:
集合的长度可以修改
可以存储不同类型的基本数值
可以存储对象
jdk初代集合为 Vector,后因需求激增子类接口,初学掌握 Collection 接口
Collection 接口的实现类暂时学习 List 类和 Set 类
List 类 ---> [特点:有序,可以索引]
默认根据地址判断两个对象是否重复,可以自己建立重复的依据,重写 equals 方法
Vection : 数组
ArrayList : 数组结构,查询快,增删慢
LinkedList : 链表结构,查询慢,增删快
Set 类 ---> [特点:无序,不重复元素]
HashSet :哈希结构,查询快
内部存储元素是辉县根据 hashCode 算出对象的哈希值,如果哈希值不同,直接存储元素;如果哈希值相同,则比较对象的内容( equals ),如果对象的内容相同,则认为是相同元素,如果内容不同,则通过拉链法存储元素
TreeSet :二叉树结构,自动排序
会自动对存进去的元素做自然排序,对于自定义的对象需要实现 CompareTo 接口,重写 CompareTo 方法,建立对象的比较大小方法
默认的排序是根据 CompareTo 方法所返回的 int 类型的值决定
如果返回 0 ,代表元素相同;
如果返回正数,代表当前对象比传入参数对象小;
如果返回负数,代表当前对象比传入参数对象大;
如果是自定义对象,最好是将对象的属性全比较一次,分清主次
集合的基本函数
import java.util.ArrayList;
import java.util.Collection;
//集合
//基本方法操作
public class Demo14 {
public static void main(String[] args) {
//创建集合对象 用 ArrayList 创建的对象初始容量为 10
Collection c = new ArrayList();
//往集合中添加元素 添加的元素都是对象
c.add("12asdf");
c.add("dkfjs");
c.add(1);
System.out.println(c);
// 判断元素是否存在,存在为 true ,不存在为 false
boolean v = c.contains("sdfsdf");
System.out.println(v);
// 判断集合是否为空
boolean t = c.isEmpty();
System.out.println(t);
// 判断集合中的个数
int i = c.size();
System.out.println(i);
// 清空元素
c.clear();
System.out.println(c);
}
}
集合的增删查改
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
import java.util.List;
public class Demo15 {
public static void main(String[] args) {
Collection co = new ArrayList();
List ct = new ArrayList();
//增
co.add("天晴了");
co.add("洗衣服了");
co.add("心情也变好了");
co.add(1);
co.add('a');
co.add("null");
System.out.println("co集合为" + co);
ct.add("这是第二个容器");
ct.add("今天是美好的一天");
ct.addAll(co);
System.out.println("ct集合为" + ct);
//删
co.remove("元气满满"); //删除不存在的元素
System.out.println(co);
co.remove("洗衣服了"); //删除存在的元素
System.out.println(co);
// co.clear();
// System.out.println(co);
//查
// 获取集合
// 先获取迭代器(遍历的工具)
Iterator it = co.iterator();
Iterator ie = ct.iterator();
// it.hasNext boolean 类型
// it.next E 返回迭代的下一个元素
//1.迭代器查找
System.out.println("=============\n这是 co 集合");
while(it.hasNext()) {
System.