Java-初步认识-常用对象API(集合框架-方法演示1,2)

时间:2021-11-30 17:53:27

一.

对于上一节讲述的集合类中的常用方法进行了演示。

Collection是接口,在使用的时候需要调用。

Java-初步认识-常用对象API(集合框架-方法演示1,2)

看上面的截图,有人说连对象都没有怎么就开始调用add方法?调用show方法的时候,需要往里面传递对象,这里写的是show中的方法,而且show方法的参数列表中的Collection coll是多线程的知识点。无论定义的什么子类对象,都具备Collection接口中的方法。

截图中的黄色下滑波浪线以及左侧的黄色标识,代表着没有使用1.5版本以后的新技术导致的,意味着具备不安全性。

可以将集合进行直接打印,而且系统会把里面的元素变成字符串输出,集合本身是个对象。

现在要将程序补充完整,由于调用show方法,需要用到对象,而且Collection是个接口,我们需要寻找一个子类来说实现接口,那么Collection的子类有哪些呢?

Java-初步认识-常用对象API(集合框架-方法演示1,2)

上面的截图中,展示了众多的Collection接口子类,但是使用的很少。根据视频的讲解,我感觉在使用时,并不是自定义类来实现接口,而是采用给出的这些类,还是说我的理解不够深刻,按道理来说是可以自己定义的

上面第一排中的一些集合都是实现了特定操作的一些集合,都是应用在特定场景下的(很多都是抽象的),而常见的应用集合位于截图的后面,比如说Arraylist。

Java-初步认识-常用对象API(集合框架-方法演示1,2)

Java-初步认识-常用对象API(集合框架-方法演示1,2)

这个集合既不是抽象的,构造时也不需要输入什么参数,使用方便。

Java-初步认识-常用对象API(集合框架-方法演示1,2)

创建了多态的对象后,导入包中(import java.util.ArrayList)。内存当中就有容器了,接着把容器传递个show方法,show方法就可以使用了。

集合直接被打印,它也很有自身的特点,它会输出集合中所有的元素[abc1, abc2, abc3],它不会打印哈希值,因为这么打印会比较有意义。注意:这里的结果并非是取出集合中的元素,而是一个字符串的整体,采用这样的操作方式为了证明集合中有元素的存在。而通常意义上说的取,是一个一个的拿出来。因此,直接打印集合是取出集合中元素的方式。

Java-初步认识-常用对象API(集合框架-方法演示1,2)

Java-初步认识-常用对象API(集合框架-方法演示1,2)

集合的remove它是会改变长度的,原来是三个,现在就变成两了。

二、

演示一下集合类中的removeAll方法。

由于removeAll方法的参数列表中还有集合的存在,因此要多创建几个集合对象。

Java-初步认识-常用对象API(集合框架-方法演示1,2)

Java-初步认识-常用对象API(集合框架-方法演示1,2)

Java-初步认识-常用对象API(集合框架-方法演示1,2)

Java-初步认识-常用对象API(集合框架-方法演示1,2)

removeAll方法,将另一个集合中的所有元素加到本集合中,无论两个集合间的元素是否有重合。(要清楚集合是对象的容器,这里说的元素都是对象,出现的"abc1"....都是字符串对象)

Java-初步认识-常用对象API(集合框架-方法演示1,2)

Java-初步认识-常用对象API(集合框架-方法演示1,2)

removeAll方法返回的是boolean类型的数值,去除的两个集合间的交集。

Java-初步认识-常用对象API(集合框架-方法演示1,2)

containsAll方法是判断另一个集合是否是调用集合的子集。

接下来说一个特殊的,retainAll说是取交集。

Java-初步认识-常用对象API(集合框架-方法演示1,2)

Java-初步认识-常用对象API(集合框架-方法演示1,2)

retainAll方法和removeAll方法刚好相反,removeAll是将和指定集合相同的元素在当前集合中给取消掉,而retainAll恰好相反

package collectionsDemo;

import java.nio.channels.ShutdownChannelGroupException;
import java.util.ArrayList;
import java.util.Collection;

public class CollectionDemo {

	public static void main(String[] args) {
		
		Collection c1 = new ArrayList();
		Collection c2 = new ArrayList();
//		show(c1);
		show1(c1,c2);

	}

	public static void show1(Collection c1, Collection c2)
	{
		//给c1添加元素
		c1.add("acb1");
		c1.add("acb2");
		c1.add("acb3");
		c1.add("acb4");
		
		//给c2添加元素
		c2.add("acb5");
		c2.add("acb6");
		c2.add("acb7");
		
		System.out.println("c1:"+c1);//c1:[acb1, acb2, acb3, acb4]
		System.out.println("c2:"+c2);//c2:[acb5, acb6, acb7]
		
		//演示addAll
		
		c1.addAll(c2);//将c2中的元素添加到c1中
		System.out.println("c1:"+c1);//c1:[acb1, acb2, acb3, acb4, acb5, acb6, acb7]
	
		//演示removeAll
		//将两个集合中的相同元素从调用removeAll的集合中删除。
		
		boolean b  = c1.removeAll(c2);//
		System.out.println("removwe:"+b);//removwe:true
		System.out.println("c1:"+c1);//c1:[acb1, acb2, acb3, acb4]
		//演示containsAll
		boolean b1 = c1.containsAll(c2);//false
		System.out.println(b1);
		
		//演示retainAll()
		//取交集,保留和指定集合相同的元素,而删除不同的元素,和removeAll功能相反。
		c2.add("abc1");
		boolean b2 = c1.retainAll(c2);
		System.out.println(c1);
	}

	public static void show(Collection coll) {
		//1.添加元素。add
		coll.add("abc1");
		coll.add("abc2");
		coll.add("abc3");
		System.out.println(coll);
		//2.删除元素remove
//		coll.remove("abc2");//会改变集合的长度,[abc1, abc3]
		System.out.println(coll.contains("abc3"));//true

		
		System.out.println(coll);
		System.out.println(coll.size());//3

		
	}

}