一、集合框架的概念
1、集合框架实际上就是一个动态的数组,与一般的对象数组不同,集合中的对象内容可以任意扩充
2、集合框架的特点:
A、这种框架是高性能的
B、框架必须允许不同的类型的类集以相同的方式和高度互操作方式工作
C、类集必须是容易扩展和修改的
3、对象数组中必须包含一组对象,但是对象数组使用的时候存在一个长度的限制,那么集合框架是专门解决这种限制的,使用集合框架可以方便地向数组中增加任意多个数据。
4、对象数组的操作中基本上都要保证对象类型的一致性,对于类集而言本身其内部的元素也应该保持一致,不管是何种类型的数据,所有的操作方式都应该是一样的
5、集合框架中的常用接口概述:
A、Collection 接口存储一组不唯一,无序的对象
B、List 接口存储一组不唯一,有序(插入顺序)的对象
C、Set 接口存储一组唯一,无序的对象
二、List接口
1、ArrayList实现了长度可变的数组,在内存中分配连续的空间。遍历元素和随机访问元素的效率比较高
2、LinkedList采用链表存储方式。插入、删除元素时效率比较高
问题:存储多条狗狗信息,获取狗狗总数,逐条打印出各条狗狗信息
public class Test1 { public static void main(String[] args) { Dog ououDog = new Dog("欧欧", "雪娜瑞"); Dog yayaDog = new Dog("亚亚", "拉布拉多"); Dog meimeiDog = new Dog("美美", "雪娜瑞"); Dog feifeiDog = new Dog("菲菲", "拉布拉多"); List dogs = new ArrayList(); dogs.add(ououDog); dogs.add(yayaDog); dogs.add(meimeiDog); dogs.add(2, feifeiDog); // 添加feifeiDog到指定位置 System.out.println("共计有" + dogs.size() + "条狗狗。"); System.out.println("分别是:"); for (int i = 0; i < dogs.size(); i++) { Dog dog = (Dog) dogs.get(i); System.out.println(dog.getName() + "\t"+ dog.getStrain()); } } }
分析:通过List接口的实现类ArrayList实现该需求
元素个数不确定
要求获得元素的实际个数
按照存储顺序获取并打印元素信息
问题:扩充以下几部分功能 删除指定位置的狗狗,如第一个狗狗 删除指定的狗狗,如删除feifeiDog对象 判断集合中是否包含指定狗狗
public class Test2 { public static void main(String[] args) { // 1、创建多个狗狗对象 // 2、创建ArrayList集合对象并把多个狗狗对象放入其中 System.out.println("删除之前共计有" +dogs.size() + "条狗狗。"); dogs.remove(0); dogs.remove(feifeiDog); System.out.println("\n删除之后还有" + dogs.size() + "条狗狗。"); if(dogs.contains(meimeiDog)) System.out.println("\n集合中包含美美的信息"); else System.out.println("\n集合中不包含美美的信息"); } }
分析:List接口提供相应方法remove()、contains(),直接使用即可
List接口常用方法:
LinkedList的特殊方法
拓展:
迭代器 it 的两个基本操作是 next 、hasNext 和 remove。
调用 it.next() 会返回迭代器的下一个元素,并且更新迭代器的状态。
调用 it.hasNext() 用于检测集合中是否还有元素。
调用 it.remove() 将迭代器返回的元素删除。