目录
前言
Java集合是多个对象的容方法,容方法中放了很多对象,集合框架是Java语言的重要组成部分,包含系统而完整的集合层次体系,封装了大量的数据结构的实现。深刻理解Java集合框架的组成结构及其中的实现类和算法,会极大地提高程序员编码的能力,Collection接口是Java集合框架的最顶层接口,什么是增强for循环呢、迭代器有哪些呢、泛型又是什么呢,好了,今天我们学习内容是Java集合——Collection接口、增强for循环、迭代器和泛型。
集合
集合有时又称为容方法,是一个对象,能将具有相同性质的多个元素汇聚成一个整体。集合被用于存储、获取、操作和传输聚合的数据。简单来说,集合是用来存储多个元素的容器。
集合的好处:
- 不受容器大小限制,可以随时添加、删除元素;
- 有大量的操作元素的方法(判断、获取等)。
集合和数组的区别
集合体系
单列集合(Collection):
- List:ArrayList;
- Set:HashSet
双列集合(Map:key,value):Map:HashMap
Collection接口
Collection接口是Java集合框架中最顶层接口,是最基本的集合接口,它提供了大量的通用的集合操作方法。一个 Collection 代表一组 Object,即 Collection 的元素, Java不提供直接继承自Collection的类,只提供继承于的子接口(如List和set)。
Collection 接口存储一组不唯一,无序的对象。
转换构造方法
Collection接口的实现都有一个带有集合参数的构造方法——转换构造方法,将新的集合初始化为包含集合参数的所有元素,不论是给定接口的子接口或其实现类型。即允许程序员来“转换”集合的类型。例如:
Collection<String>a;
其中a可以是List、Set或另一种Collection。例如:
List<String> list=new ArrayList<String>(a);
Set<String> set=new HashSet<String>(a);
其中ArrayList是List接口的一个实现类,HashSet是Set接口的一个实现类。通过使用“转换构造方法”,list、set对象就包含了集合a中所有的元素。
Collection接口的批量操作
批量操作是指在整个集合上的操作,批量操作的方法有:
- containsAll:如果目标集合包含指定集合的所有元素,返回true;
- addAll:将指定集合中的所有元素添加到目标集合中;
- removeAll:从目标集合中移除所有同时还包含在指定集合中的元素;
- retainAll:从目标集合中移除所有没有包含在指定集合中的元素;
- clear:从集合中移除所有元素。
例如:从一个名为C的Collection中移除一个指定元素e的所有实例。
C.removeAll(Collections.singleton(e)); //移除指定元素e
C.removeAll(Collections.singleton(null)); //移除所有null元素
Collections工具类
Collections类是针对集合进行操作的工具类。
常用的成员方法:
- sort(List<T>):根据元素的自然顺序,将指定列表按升序排序;
- max(Collection<T>):返回集合的最大元素;
- reverse(List<T>):反转List集合元素;
- shuffle(List<T>):使用默认的随机源随机置换指定的列表。
Collections工具类实例
import java.util.*;
public class myfirst {
public static void main(String[] args) {
List list=new ArrayList(); //创建集合对象
list.add(1); //将元素对象添加到集合对象中
list.add(3);
list.add(5);
list.add(6);
list.add(2);
System.out.println("未重新排列的顺序为:"+list);
System.out.println("集合中最大的元素为:"+Collections.max(list)); //输出集合最大值
Collections.sort(list); //升序排列集合
System.out.println("升序排列后的结果为:"+list);
Collections.reverse(list); //反转排序集合
System.out.println("反转后的集合排列顺序为:"+list);
Collections.shuffle(list); //随机置换排序集合
System.out.println("随机置换后的结果为:"+list);
}
}
运行结果为:
未重新排列的顺序为:[1, 3, 5, 6, 2]
集合中最大的元素为:6
升序排列后的结果为:[1, 2, 3, 5, 6]
反转后的集合排列顺序为:[6, 5, 3, 2, 1]
随机置换后的结果为:[2, 6, 3, 5, 1]
增强for循环
增强for循环的作用:简化数组和集合的遍历。
增强for循环的语法格式:
for(数据类型 变量名:数组或集合对象){
//循环体,变量
}
增强for循环实例:
import java.util.*;
public class myfirst {
public static void main(String[] args) {
List list=new ArrayList(); //创建集合对象
list.add("小红"); //将元素对象添加到集合对象中
list.add("小红");
list.add("小明");
for(Object obj:list) { //遍历集合
System.out.print(obj+" ");
}
}
}
运行结果为:
小红 小红 小明
迭代器
对过程的重复,称为迭代。
迭代器是遍历Collection集合的通用方法。
列表迭代器是List体系独有的遍历方式,在对集合遍历的同时进行添加、删除等操作,但必须通过调用列表迭代器的方法来实现。
使用迭代器的步骤:
- 根据集合对象获取其对象的迭代器对象;
- 判断迭代器是否有元素;
- 如果有就获取元素
迭代器的常用方法
- next():返回迭代的下一个元素对象;
- hasNext():如果仍有元素可以迭代,则返回true;
普通迭代器实例
使用迭代器遍历List集合
import java.util.*;
public class myfirst {
public static void main(String[] args) {
List list=new ArrayList(); //创建集合对象
list.add("诸葛亮"); //将元素对象添加到集合对象中
list.add("明世隐");
list.add("曹操");
Iterator it=list.iterator(); //根据集合对象获取其对象的迭代对象
while(it.hasNext()) { //如果迭代器有元素就一直迭代
String s=(String)it.next(); //获取迭代器中的元素并转换为字符串
System.out.println(s);
}
}
}
运行结果为:
诸葛亮
明世隐
曹操
注意:普通迭代器不能同时进行添加、删除等修改操作。
列表迭代器
列表迭代器是List体系独有的遍历方式,在对集合遍历的同时进行添加、删除等操作,但必须通过调用列表迭代器的方法来实现。
列表迭代器实例
使用列表迭代器去遍历List集合:
import java.util.*;
public class myfirst {
public static void main(String[] args) {
List list=new ArrayList(); //创建集合对象
list.add("诸葛亮"); //将元素对象添加到集合对象中
list.add("明世隐");
list.add("曹操");
//Iterator it=list.iterator(); //由于普通迭代器不能同时进行进行添加、删除等操作,必须用列表迭代器
ListIterator it=list.listIterator(); //根据集合对象获取列表迭代器对象
while(it.hasNext()) { //判断是否有获取元素
String s=(String)it.next(); //有就获取元素
if("明世隐".equals(s)) { //判断是否有“明世隐”这个字符串
//list.add("java"); //必须调用列表迭代器的方法来实现,否则会报错ConcurrentModificationException(并发修改异常)
it.add("关羽"); //有就在其后面添加关羽
}
System.out.println(s); //输出获取到的元素
}
System.out.println(list); //输出list集合中的元素
}
}
运行结果为:
诸葛亮
明世隐
曹操
[诸葛亮, 明世隐, 关羽, 曹操]
泛型
泛型是指任意类型,又叫参数化类型,对具体类型的使用起到辅助作用,类似于方法的参数。泛型一般只和集合相结合使用,是JDK5的新特性,但是从JDK7开始,后边的泛型可以不用写具体的数据类型了。
泛型的好处:数据类型安全,避免了类型的转换。
集合类泛型
集合类泛型是指存放在指定类型的元素。
语法格式为:
List<String> list=new ArrayList<String>();
最后
好了,关于Java集合的Collection接口、增强for循环、迭代器和泛型的相关知识讲到这里了,谢谢观看!!!
我们下篇文章再见!!!
成功不是将来才有的,而是从决定去做的那一刻起,持续累积而成。