collection 介绍

本文深入探讨Java集合框架的各类集合特点及应用场景,包括Set、List、Map和Queue等核心接口的具体实现,同时介绍如何利用Java 8的新特性如lambda表达式和流(Stream)API来高效操作集合。

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



import java.util.ArrayList;
import java.util.Collection;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Map;
import java.util.function.Consumer;
import java.util.function.Predicate;
import java.util.stream.IntStream;

/* 2017-02-17 12:41:48
 *	Set 	无序、不可重复
 *	List  	有序、重复
 *	Map		映射关系集合
 *	Queue	队列集合实现
 *
 *
 *	--Map
 *		------EnumMap
 *		------identityHashMap
 *		------HashMap  线程不安全  key、vlaue 允许为null  
 *				-LinkHashMap
 *		------HashTable  线程安全 key、vlaue  不能为null
 *		------SortedMap
 *				-TreeMap
 *		------WeakHashMap
 *	--Collection
 *		---Set
 *			---EnumSet
 *			---SortedSet
 *				-TreeSet
 *			---HashSet
 *				-LinkedHashSet
 *		---Queue
 *			--Deque
 *			--PriorityQueue
 *		---List
 *			---Vector
 *				-Stack
 *			---ArrayList
 *			---linkedList  也继承了Deque
 */
public class Collectionj {
	public static void main(String[] args) {
//		c1();
		
//		bianlij();
			
//		predicatej();
		
		/* 2017-02-17 14:39:53
		 * 
		 */
		//stream 操作集合
		//stream  是一个通用的流接口
		/*	
		 * 独立使用stream步骤
		 * 
		 * 使用stream  或  xxxstream 的builder方法 创建该stream 对应的builder
		 * 重复调用add 方法向流中添加多个元素
		 * 调用builder的  build 方法 获取对应的stream   
		 * 调用stream 的聚集方法
		 * 
		 * */
		 IntStream is = IntStream.builder()
				 .add(1111)
				 .add(23)
				 .add(31)
				 .add(46)
				 .add(76)
				 .build();
		 //使用聚焦方法  每次只能执行一行
//		 System.out.println(is.max().getAsInt() + "  " + is.count()); 
		 
//		 System.out.println(is.count());
		 IntStream is2 = is.map(ele -> ele *2+1); //将原来得元素的2倍 + 1  
		 is2.forEach(System.out::println);   //是用方法引用的方式来遍历  集合元素
		 /*
		  * 
		  * stream 提供大量的方法进行聚焦操作  这些方法 可以是中间 的  intermediate      也可以是 terminal  
		  * 
		  * 中间方法   中间操作允许流报纸打开状态,并允许直接刁颖后续方法  , map 就是一个中间方法  返回值是另外一个流
		  * 
		  * 末端方法
		  * 是对流的最终操作, 当对流执行末端方法后,该流将会被消耗且不可再用 ,  sum  count  average   
		  * 
		  * 有状态的方法   
		  * 这种方法会给流增加一些新的属性,  元素的唯一性、 元素的最大数量  这些方法 往往 有大的开销
		  * 
		  * 短路方法 
		  * 可以尽早的结束对流的操作  不必键槽所有的元素
		  * */
		 
	}
	/* 2017-02-17 14:32:40
	 * 
	//Predicate 操作
	 */
	private static void predicatej() {
		Collection collection = new HashSet<String>();
		collection.add("11111");
		collection.add("b222111222222222");
		collection.add("c12222211");
		collection.add("d111");
		collection.add("e");
			
//		collection.removeIf(c ->((String)(c)).length() <5) ;
			//   用lambda   将长度小于5 的元素删除
		collection.forEach(c -> System.out.println(c));
//			
	
		System.out.println();	
		
		System.out.println(testpre(collection, ele -> ((String)ele).contains("1")));
		 //统计字符中有  1  的个数
	}
	static int  testpre( Collection collection , Predicate predicate ){
		
		int i = 0 ;
		for (Object obj : collection) {
			if (predicate.test(obj)) {
				i++ ;
			}
		}
		return i ;
		
	}

	/* 2017-02-17 13:49:25
	 * 
	 */
	private static void bianlij() {
		/*
		 * Iterable 接口新增了一个 forEach(Consumer action) 默认方法
		 * 该方法所需参数的类型是一个函数式接口
		 * 也是Collection 的父接口
		 * 可以使用lambda表达式来遍历集合元素
		 * */
		
			Collection collection = new HashSet<String>();
			collection.add("a");
			collection.add("b");
			collection.add("c");
			collection.add("d");
			collection.add("e");
			collection.forEach(c -> System.out.println(c));
//		lambda 表达式的目标类型是 Comsumer  
//			foreach 方法会自动将集合的元素逐个传给 Lambda 表达式
		
	// iterator 遍历
			//iterator 仅仅用来遍历 没有保存对象的能力
			//遍历过程中不能对元素进行修改
			Iterator iterator = collection.iterator();
			while (iterator.hasNext()) {
//				iterator.hasNext() 如果没有遍历完就返回元素
//				iterator.next()  返回集合的下一个元素
//				iterator.remove();  删除集合里 上一次next 方法返回的元素
//				iterator.forEachRemaining(action);  可以是用lambda 遍历集合元素
				System.out.print(iterator.next());
			}
			System.out.println();
			iterator.forEachRemaining(i -> System.out.print(i));
			System.out.println();
			
			//foreach 遍历过程中的值也不能被改变
			for (Object object : collection) {
				System.out.print(object);
			}
	}

	/* 2017-02-17 13:10:45
	 * 
	 */
	private static void c1() {
		/*
		 *Collection 接口是List、Set、Queue 的父接口 
		 * 
		 */
		Collection collection = new ArrayList();
		//增
		collection.add("asdf"); // 添加元素
		collection.add("123");
//		collection.addAll(collection)  
		
		//删
//		collection.clear();
//		collection.remove(o)
//		collection.removeAll(c)
		
		//判断
//		collection.size() 
//		collection.isEmpty()
//		collection.contains(o)
		
		//输出
//		collection.toArray()
//		collection.retainAll(c)
		//返回迭代器
//		collection.iterator()
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值