第一讲 集合框架(体系概述)
一、为什么出现集合类
面向对象语言对事物的体现都是以对象的形式,所以为了方便对多个对象的操作,就对对象进行存储,集合就是存储对象最常用的一种方式。
二、数组和集合类同是容器,有何不同?
数组虽然也可以存储对象,但是长度是固定的,集合的长度是可变的,数组中可以存储基本数据类型,集合只能存储对象。
三、集合类的特点
集合只用于存储对象,集合长度是可变的,集合可以存储不同类型的对象。
四、集合框架的构成
为什么会出现这么多的容器呢?
因为每个容器对数据的存储方式都有不同。这个存储方式称之为:数据结构
“容器”的理解:就是可以装对象的数据结构
第二讲 集合框架(共性方法)
Collection是集合框架中的最大接口。但是在开发中常用的是它的几个子接口:List,Set,Queue,SortedSet.所属关系:
Collection
List::元素是有序的,元素可以重复
Set:元素是无序的,元素不可以重复
Queue:队列接口
SortedSet:可以对集合中的数据进行排序
一、Collection接口中常见的操作
1.添加元素
add(Object obj);//add方法的参数类型是Object,以便接收任意类型对象。
2.删除元素
remove(Object obj)
removeAll(另一集合);//调用者只保留另一集合没有的元素
clear();清空集合
3.判断元素
contains(Object object);//判断是否存在obj这个元素
isEmpty();//判断是否为空
4.获取个数,集合长度
size();
5.取交集
retainAll(另一集合) ;//调用者只保留两集合的共性元素。
注意:集合中村到户的都是对象的引用(地址)
第三讲 集合框架(集合的输出方式)
一、迭代器
List<String> all = new ArrayList<String>();//实例化List接口
all.add("1");//添加元素
all.add("2");
all.add("3");
Iterator<String> iterator = all.iterator();//直接实例化Iterator接口
while(iterator.hasNext()){//依次判断是否还有元素
System.out.println(iterator.next());
}
4.注意事项
二、foreach
List<String> all = new ArrayList<String>();//实例化List接口
all.add("1");//添加元素
all.add("2");
all.add("3");
Iterator<String> iterator = all.iterator();//直接实例化Iterator接口
for(String str : all){//使用foreach输出
System.out.print(str);
}
第三讲 List接口
一、概述
组成
List:元素是有序的,元素可以重复。因为该集合体系有索引。
|--ArrayList:底层的数据结构使用的是数组结构。特点:查询速度很快。但是增删稍慢。线程不同步。
|--LinkedList:底层使用的是链表数据结构。特点:增删速度很快,查询稍慢。
|--Vector:底层是数组数据结构。线程同步。被ArrayList替代了。
二、例子
List<String> all = new ArrayList<String>();//实例化List接口
all.add("Hello");//添加元素
all.add("world");
all.add("!");
all.remove(0);//删除指定位置的元素
all.remove("Hello");//删除指定内容的元素
for(int i = 0;i < all.size();i++){//通过size()获得List中有元素个数
System.out.println(all.get(i));//通过get()方法并给下标取得集合中的元素
}
Object obj[] = all.toArray();//将集合变为对象数组
for(int j = 0;j<obj.length;j++){
String temp = (String)obj[j];
System.out.println(temp);
}
//判断集合是否为空
System.out.println("集合是否为空:"+ all.isEmpty());
//判断集合中是否存在某个内容
System.out.println(all.contains("Hello") ? "Hello存在":"Hello不存在");
7.根据下标取出集合中的部分内容
//根据下标取出集合中的部分内容
List<String> allSub = all.subList(2, 3);
8.取得某个元素的下标
//取得某个元素的下标
System.out.println("Hello的位置:"+all.indexOf("Hello"));
Iterator<String> iterator = all.iterator();//直接实例化Iterator接口
for(String str : all){//使用foreach输出
System.out.print(str);
}