【Java基础】集合总结(一)——Collection集合

本文概述了Java集合的概念,包括Collection接口及其子接口Set和List,以及Map接口。详细介绍了如何遍历集合,如使用Lambda表达式、Iterator和forEach循环。同时,文章还提及了在集合中使用Predicate和Stream进行操作的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、Java集合概述

为了保存数量不确定的数据,以及保存具有映射关系的数据(也被称为关联数组),Java提供了集合类。集合类主要负责保存、盛装其他数据,因此集合类也被称为容器类。所有的集合类都位于java.util包下,后来为了处理多线程环境下的并发安全问题,java5还在java.util.concurrent包下提供看一些多线程支持的集合类。

java集合类主要由两个接口派生而出:Collection和Map。

  • Set和List接口是Collection接口派生的两个子接口,它们分别代表了无序集合和有序集合,Quene是队列,类似于List。
  • 所有的Map实现类用于保存具有映射关系的数据。Map保存的每项数据都是key-value对,也就是由key和value两个值组成。Map里的key是不可重复的,key用于标识集合里的每项元素。

下图为Collection和Map体系的继承树:

二、遍历集合

遍历集合有两种方式:Iterator接口和forEach循环。

Iterator主要用于遍历(即迭代访问)Collection集合中的元素,Iterator对象被称为迭代器。

(一)使用Lambda表达式

public class CollectionEach
{
	public static void main(String [] args)
	{
		//创建一个集合
		Collection books = new HashSet();
		books.add("轻量级JavaEE企业应用实战");
		books.add("疯狂Java讲义");
		books.add("疯狂Android讲义");
		//调用forEach()方法遍历集合
		books.forEach(obj -> System.out.println("迭代集合元素:"+obj));
	}
}

(二)使用Iterator遍历

public class CollectionEach
{
	public static void main(String [] args)
	{
		//创建集合、添加元素的代码和前一个程序相同
		...
		//获取books集合对应的迭代器
		Iterator it=books.iterator();
		while(it.hasNext())
		{
			//it.next()方法返回的数据类型是object类型,因此需要强制类型转换
			String book = (String)it.next();
			System.out.println(book);
			if(book.equals("疯狂Java讲义"))
			{
				//从集合中删除上一层next()方法返回的元素
				it.remove();
			}
			//对book变量赋值,不会改变集合元素本身
			book = "测试字符串";
		}
		System.out.println(books);
	}
}

注意:

  • Iterator必须依附于Collection对象,若有一个Iterator集合,则必然有一个与之关联的Collection对象。
  • 当使用Iterator迭代访问Collection集合元素时,Collection集合里的元素不能被改变,只有通过Iterator的remove方法删除上一次next()方法返回的集合元素才可以;否则会引发java.util.ConcurrentModificationException异常。

(三)使用Lambda表达式遍历Iterator

public class CollectionEach
{
	public static void main(String [] args)
	{
		//创建集合、添加元素的代码和前一个程序相同
		...
		//获取books集合对应的迭代器
		Iterator it = books.iterator();
		//使用Lambad表达式(目标类型是Comsumer)来遍历集合元素
		it.forEachRemaining(obj -> System.out.println("迭代集合元素:"+obj));
	}
}

(四)使用forEach循环遍历

public class CollectionEach
{
	public static void main(String [] args)
	{
		//创建集合、添加元素的代码和前一个程序相同
		...
		for(Object obj:books)
		{
			String book = (String)obj;
			System.out.println(book);
		}
		System.out.println(books);
	}
}

三、操作集合

(一)使用Predicate操作集合

//创建一个集合
Collection books = new HashSet();
books.add("轻量级JavaEE企业应用实战");
books.add("疯狂Java讲义");
books.add("疯狂IOS讲义");
books.add("疯狂Ajax讲义");
books.add("疯狂Android讲义");

//removeIf(Predicate filter)方法,批量删除符合filter条件的所有元素。
//使用Lambda表达式(目标类型是Predicate)过滤集合
books.removeIf(ele -> ((String)ele).length() < 10);
System.out.println(books);

(二)使用Stream操作集合

//调用builder()类方法创建该Stream对应的Builder
IntStream d=IntStream.builder()
    .add(14)
    .add(13)
    .add(-5)
    .add(8)
    .build();

//求元素的最大值
d.max().getAsInt();
//求所有元素的总和
d.sum();
//求所有元素的总数
d.count();
//求所有元素的平均值
d.average();
//统计c集合中包含“红色”子串的数量
books.stream().filter(ele->((String)ele).contains("红色")).count();

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值