Java集合——Collection接口、增强for循环、迭代器和泛型

目录

前言

集合

集合和数组的区别

集合体系

Collection接口

转换构造方法

Collection接口的批量操作

Collections工具类

Collections工具类实例

增强for循环

增强for循环实例:

迭代器

迭代器的常用方法

普通迭代器实例

列表迭代器

列表迭代器实例

泛型

集合类泛型

最后


前言

Java集合是多个对象的容方法,容方法中放了很多对象,集合框架是Java语言的重要组成部分,包含系统而完整的集合层次体系,封装了大量的数据结构的实现。深刻理解Java集合框架的组成结构及其中的实现类和算法,会极大地提高程序员编码的能力,Collection接口是Java集合框架的最顶层接口,什么是增强for循环呢、迭代器有哪些呢、泛型又是什么呢,好了,今天我们学习内容是Java集合——Collection接口、增强for循环、迭代器和泛型。

集合

集合有时又称为容方法,是一个对象,能将具有相同性质的多个元素汇聚成一个整体。集合被用于存储、获取、操作和传输聚合的数据。简单来说,集合是用来存储多个元素的容器。

集合的好处:

  • 不受容器大小限制,可以随时添加、删除元素;
  • 有大量的操作元素的方法(判断、获取等)。

集合和数组的区别

集合体系

单列集合(Collection):

  • List:ArrayList;
  • Set:HashSet

双列集合(Map:key,value):Map:HashMap

qwqe

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体系独有的遍历方式,在对集合遍历的同时进行添加、删除等操作,但必须通过调用列表迭代器的方法来实现。

使用迭代器的步骤:

  1. 根据集合对象获取其对象的迭代器对象;
  2. 判断迭代器是否有元素;
  3. 如果有就获取元素

迭代器的常用方法

  • 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循环、迭代器和泛型的相关知识讲到这里了,谢谢观看!!!

我们下篇文章再见!!!

成功不是将来才有的,而是从决定去做的那一刻起,持续累积而成。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

白巧克力LIN

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值