Collection集合基础篇

一:Collection的介绍

Collection 层次结构 中的根接口。Collection 表示一组对象,这些对象也称为 collection 的元素。一些 collection 允许有重复的元素,而另一些则不允许。一些 collection 是有序的,而另一些则是无序的。JDK 不提供此接口的任何直接 实现:它提供更具体的子接口(如 Set 和 List)实现。

 

二:掌握Collection接口中的方法

下面就演示一下,上面方法的含义

2.1 方法(1): 不带All的方法

/**
 * 数组和集合的区别:
 * 数组:只能存储同一种类型的元素,而且长度是定长,数组既可以存储基本数据类型,也可以存储引用数据类型
 * 集合:可以存储不同的类型的元素,而且长度是变长,集合只能存储引用数据类型
 * 
 * 集合中的存储的是引用类型,而这些引用类型也就是对象,把存储到集合中的这些对象 ,我们称为集合的元素!
 * 
 * 分析:从具体到抽象
 * 实现:从抽象到具体: Collection c = new ArrayList();
 * 使用 :使用具体的 :  ArrayList
 * 
 * 学习方法:看到一个继承体系,我们先学习老大,再学习小弟!
 * Collection接口的方法
 * 
 * 1.添加功能
 * 		boolean add(E e) 添加一个元素
 *      boolean addAll(Collection<? extends E> c);将一个指定集合里面的元素作为元素添加到此 
 *                                                集合!!!
 *          听起来有点绕!看一下下面的例子就一清二楚了!!!
 *      	可以想成一个行李箱(容器)  和  一个衣柜(容器),快到过年了,要收拾衣服回家了
 *      	行李箱.addAll(衣柜): 就是把衣柜里面的衣服,全部装入行李箱!!
 * 2.删除功能
 * 		void clear(); 删除所有元素,清空购物车(容器)
 * 		boolean remove(Object o) 移除指定的元素!
 * 		boolean removeAll(Collection c)移除指定集合中的元素,只有一个元素被移除了,就返回true
 * 3.判断功能
 * 		boolean contains(Object o): 判断集合中是否包含该元素
 *      boolean containsAll(Collection<?> c): 如果此 collection 包含指定 collection 中 
 *                                             的"所有元素",则返回 true。
 *      boolean isEmpty() 如果此 collection 不包含元素,则返回 true。 ,和size()==0 感觉一 
 *                        样的
 * 4.查找功能
 * 		Iterator<E> iterator()
 * 5.长度功能
 * 		int size() 返回此 collection 中的元素数。
 * 6.交集功能
 * 		boolean retainAll(Collection<?> c) 
 * 		交集: 两个集合都有的元素
 * 		这个方法我们要考虑两个问题:
 * 		a.交集的元素跑去哪了 ?   
 * 			假设有两个集合A,B, A对B做交集,最终的结果保存到A中,B不变!
 * 		b.返回boolean是什么意思?
 * 			返回值表示的是A这个集合是否发生过改变!
 * 
 * 7.把集合转为数组: 为什么返回值是一个Object[]呢? 因为集合里面可以装不同类型的对象!
 * 		Object[] toArray()
 * 
 * @author wzj
 *
 */
public class TestCollection1 {

	public static void main(String[] args) {
		/**
		 * 把Collection想成一个行李箱
		 * 下面测试Collection接口的基本功能 
		 */
		
		//创建行李箱
		Collection c = new ArrayList();
		
		//1.往行李箱添加衣服
		c.add("adidas");
		c.add("Nike");
		c.add("Armani");
		
//		c.clear();	//把行李箱里面的衣服全部扔掉
//		c.remove("adidas"); //扔掉行李箱指定的那件衣服
		
		//2.看行李箱有没有这个衣服
		System.out.println(c.contains("adidas"));
		//3.看行李箱的衣服是不是没有了
		System.out.println(c.isEmpty());
		//4.看行李箱中的衣服还有几件
		System.out.println(c.size());
		System.out.println(c);
	}
}

2.2方法(2):带All的方法

public class TestCollection2 {

	public static void main(String[] args) {
		/**
		 * 测试Collections的带All的方法,这里带All的方法,参数都是Collection对象,并且返回值都是boolean值
		 * boolean addAll(Collection c)
		 * containsAll(Collection c)
		 * removeAll(Collection c)
		 * retainAll(Collection c)
		 */
		
		Collection c1 = new ArrayList();
		c1.add(1);
		c1.add(2);
		c1.add(3);
		
		Collection c2 = new ArrayList();
		c2.add(1);
		c2.add(2);
		c2.add(3);
		
		//1.addAll(): 把c2里面的元素,全部添加到c1
		//System.out.println(c1.addAll(c2));//true
		
		//2.containsAll(): 只有c2里面列出的元素,c1全部有就是true,否则是fasle
		//System.out.println(c1.containsAll(c2)); //false
		
		//3.removeAll(): 只有c2里面列出的元素,c1移除了一个就返回true!!
		//System.out.println(c1.removeAll(c2)); //true
		
		/*
		 * retainAll(): 
		 * 		a: c1对c2做交集: 最终交集的结果(也就是两个集合相同的元素 )存放到了c1集合中
		 *      b: 而返回值的意思是: c1这个集合发送过改变没!!
		 *      
		 *      例子:
		 *      c1:[1, 2, 3]
		 *		c2:[1, 2, 3]
		 * 假如 c1 和 c2集合都存的1,2,3  然后 c1.retainsAll(c2) 
	     * 结果确实: c1里面存的是两个集合交集的元素1,2,3
	     * 但c1集合里面的元素并没有改变过,所以返回值是false!
	     * 注意:【这里不要把返回值的意思搞成是判断c1和c2集合是否有交集的意思!!】
	     * 
		 */
		System.out.println(c1.retainAll(c2));
		System.out.println("c1:"+c1);
		System.out.println("c2:"+c2);
	}
}

2.3方法(3):iterator() & toArray()

public class TestCollection3 {

	public static void main(String[] args) {
		/**
		 * 测试Collection接口方法
		 *   1. Object[] toArray()方法
		 *   2. Iterator<E> iterator();
		 *   	 	iterator()方法是 Collection接口继承Iterator接口的方法 !!
		 *   3.Iterator: 迭代器是遍历集合的一种方式,是依赖于集合而存在的!!
		 */
		Collection c = new ArrayList(); 
		
		c.add("hello"); // Object obj = "hello"; 向上转型
		c.add("world");
		c.add("java");
		
		Object[] objs = c.toArray();
		for (int i = 0; i < objs.length; i++) {
			/**
			 * 强制类型转换: 分为基本数据类型,和引用数据类型
			 * 这是向下转型! 指的是引用数据类型的这种情况
			 */
			String str = (String)objs[i];
			System.out.println(str);
		}
		
		System.out.println("===================");
		
		Iterator iterator = c.iterator();
		/**
		 * hashNext(): 判断下面还有没有元素, 如果有就使用next()方法让指针往右移动一下,并返回对应的值!!
		 * 注意:【指针的位置:刚开始是指向第一个元素的前面的那个位置!!!】
		 */
		while(iterator.hasNext()) {
			String str = (String)iterator.next();
			System.out.println(str);
		}
		
		System.out.println("========也可以改成for循环===========");
		//1.初始条件   2.判断条件 4.步长(这里不需要,省了)
		for(Iterator iterator2 = c.iterator(); iterator2.hasNext();) {
			//3.方法体
			String str = (String)iterator2.next(); //next() 指针往下移动一下,并返回对应的值
			System.out.println(str);
		}
		
	}
}

其实虽然这些以前都学习过,但其实并不掌握的并不牢固,有时候回过头来,复习一遍,对整个知识体系感觉就更清晰了,
千万不要看以为看了一遍,就万事大吉了,真的,写一遍和看一遍的效果完全不一样!!

最后有什么写的不好的,希望各位可以不吝指出

觉得对你有帮助的,想打赏的可以打赏一下,哈哈哈,多少无所谓,这也是对我一种支持与鼓励吗,最后不喜勿喷

有志同道合的小伙伴可以加QQ群讨论:897992110

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值