这里写目录标题
- 1、Java集合框架概述
- 2、集合的使用场景
- 3、Java中集合的分类
-
- 3.1、Collection集合继承树
- 3.2、Collection集合的常用方法
-
- 3.2.1、add(Object obj):将元素obj添加到集合coll中
- 3.2.2、size():获取添加的元素的个数
- 3.2.3、addAll(Collection coll):将集合coll1中的元素全部添加到当前的集合中
- 3.2.4、isEmpty():判断当前集合元素是否为空
- 3.2.5、clear():清空集合元素
- 3.2.6、contains(Object obj):判断当前集合中是否包含obj
- 3.2.7、containsAll(Collection coll1):判断形参coll1中的所有元素是否在集合中
- 3.2.8、remove(Object obj):从当前集合中移除obj元素
- 3.2.9、removeAll(Collection coll1):从当前集合中移除coll1中的元素
- 3.2.10、 retainAll(Collection coll1):交集。获取当前集合和coll1的交集,并返回当前集合
- 3.2.11、equals(Collection coll2):要想返回true,需要当前集合和我们的形参coll2元素一致
- 3.2.12、hashCode()判断当前集合的hash值
- 3.2.13、toArray():将集合转化为数组
- 3.2.14、iterator():返回Iterator接口实例,用于遍历集合
- 3.3、Iterator迭代器接口
1、Java集合框架概述
-
集合、数组都是对多个数据进行存储操作的结构,简称和Java容器。
说明:此时的存储,主要是指内存层面的存储,不涉及到持久化的存储(.txt,.kpg,。avi,数据库中) -
数组在存储多个数据方面的特点(优点):
1、 一旦初始化以后,器长度就确定了。
2、 数组一旦定义好,其元素的类型也就基本确定了。我们也就只能操作指定类型的数据量。
比如:String[] arr; int[] arr1 Object[] arr2; -
数组在存储多个数据方面的缺点
1、 一旦初始化后长度就确定了
2、 数组中提供的方法非常有限,对于添加、删除、修改、插入数据等操作,非常不便
3、 获取数组中实际元素的个数的需求,数组没有现成的属性或者方法可用
4、数组存储数据的特点:有序可重复。对于无序、不可重复的需求,不能满足。
2、集合的使用场景
3、Java中集合的分类
* Collection接口:单列集合,用来存储一个一个的对象
* List接口:存储有序的,可重复的。 --->”动态“的存储
* ArrayList、LinkedList、Vector
* Set接口:存储无序的,不可重复的。 ---> 高中讲的‘集合"
* HashSet、LinkedHashSet、TreeSet
* Map接口:双列集合,用来存储一堆(key - value)一对的数据。 -->高中的函数
* HashMap、LinkedHaspMap、TreeMap、HashTable、Properties
3.1、Collection集合继承树
3.2、Collection集合的常用方法
常用方法1(5个):
3.2.1、add(Object obj):将元素obj添加到集合coll中
3.2.2、size():获取添加的元素的个数
3.2.3、addAll(Collection coll):将集合coll1中的元素全部添加到当前的集合中
3.2.4、isEmpty():判断当前集合元素是否为空
3.2.5、clear():清空集合元素
public class CollectionTest01 {
@Test
public void test01(){
Collection coll = new ArrayList();
//1、add(Object obj):将元素obj添加到集合coll中
coll.add("aaa");
coll.add("bbb");
coll.add(123);
coll.add(new Date());
//2、size():获取添加的元素的个数
System.out.println(coll.size());
//3、addAll(Collection coll):将集合coll1中的元素全部添加到当前的集合中
Collection coll1 = new ArrayList();
coll1.add(456);
coll1.add("CC");
coll.addAll(coll1);
//4、clear():清空集合元素
//coll.clear();
//5、isEmpty():判断当前集合元素是否为空
System.out.println(coll.isEmpty());
}
}
常用方法2(2个查看是否包含某个元素的方法):
3.2.6、contains(Object obj):判断当前集合中是否包含obj
3.2.7、containsAll(Collection coll1):判断形参coll1中的所有元素是否在集合中
public class CollectionTest02 {
@Test
public void test(){
Collection coll = new ArrayList();
coll.add(123);
coll.add("abc");
coll.add(new String("Tom"));
coll.add(new Person("liming","20"));
//1、contains(Object obj):判断当前集合中是否包含obj
//在进行判断时调用的是obj的equals方法
System.out.println(coll.contains(123));
//2、containsAll(Collection coll1):判断形参coll1中的所有元素是否在集合中
Collection coll1 = Arrays.asList(123,"abc");
System.out.println( coll.containsAll(coll1));
}
}
常用方法3(移除的方法):
3.2.8、remove(Object obj):从当前集合中移除obj元素
3.2.9、removeAll(Collection coll1):从当前集合中移除coll1中的元素
常用方法4:
3.2.10、 retainAll(Collection coll1):交集。获取当前集合和coll1的交集,并返回当前集合
3.2.11、equals(Collection coll2):要想返回true,需要当前集合和我们的形参coll2元素一致
常用方法5:
3.2.12、hashCode()判断当前集合的hash值
3.2.13、toArray():将集合转化为数组
3.2.14、iterator():返回Iterator接口实例,用于遍历集合
// 集合元素的遍历操作,使用迭代器Iterator接口。
// 内部的方法:haseNext()和next()
public class IteratorTest {
@Test
public void test01(){
Collection collection = new ArrayList();
collection.add("123");
collection.add(true);
collection.add(new Person("zhangsan","18"));
collection.add(456);
// 返回Iterator接口实例,用于遍历集合
Iterator iterator = collection.iterator();
while (iterator.hasNext()){
Object next = iterator.next();
System.out.println(next);
}
}
}
3.3、Iterator迭代器接口
Iterator不是容器,是一个迭代器,用于迭代元素。
3.3.1、Iterator接口中的方法
//iterator.remove()方法
@Test
public void test02(){
Collection collection = new ArrayList();
collection.add("123");
collection.add(true);
collection.add(new Person("zhangsan","18"));
collection.add(456);
//删除集合中的123
Iterator iterator = collection.iterator();
while (iterator.hasNext()){
//判断集合中是否有下一个值
Object next = iterator.next();//集合中有下一个值,获取到写一个值
if("123".equals(next)){
//如果下一个值是123
iterator.remove();//则从集合中移除123
}
}//当指针走到这时,已经遍历完整个集合,又回到了开始
//此时集合中已经移除了123,再次获取iterator,遍历集合
iterator = collection.iterator();
while (iterator.hasNext()){
System.out.println(iterator.next());
}
}