【Java】【集合】collection接口常见方法、集合转数组toArray()、带ALL的方法

Collection接口是集合体系不断向上抽取共性内容而来的。
其下有两个子接口:List(列表),Set(集)。

Collection

  |--List:元素是有序的,元素可以重复。因为该集合体系有索引。

  |--Set:元素是无序的,元素不可以重复。


一、collection接口常见方法


  • boolean add(E e)
  • boolean remove(Object o)
  • void clear()
  • boolean contains(Object o)
  • boolean isEmpty()
  • int size()
1、boolean add()方法:添加

    传入任意对象,返回布尔值

  • 如果是List集合一直都返回true,因为List集合中是可以存储重复元素的 
  • 如果是Set集合当存储重复元素的时候,就会返回false
  • ArrayList的父类的父类重写toString方法,所以在打印对象的引用的时候,输出的结果不是Object类中toString的结果
Collection c = new ArrayList();						//父类引用指向子类对象
boolean b1 = c.add("abc");
boolean b2 = c.add(true);							//自动装箱new Boolean(true);
boolean b3 = c.add(100);
boolean b4 = c.add(new Student("张三",23));			
boolean b5 = c.add("abc");
		
System.out.println(b1);   //true,Lisy
System.out.println(b2);    //true,Lisy
System.out.println(b3);    //true,Lisy
System.out.println(b4);    //true,Lisy
System.out.println(b5);    //true,Lisy
System.out.println(c.toString());   [abc,true,100,Student [name = 张三, age =23],abc]   //重写toString方法
2、boolean remove(Object o):删除指定元素
3、void clear():清空集合

4、boolean contains(Object o):判断是否包含

5、boolean isEmpty():判断集合是否为空

6、int size():获取集合中元素的个数

Collection c = new ArrayList();		
c.add("a");
c.add("b");
c.add("c");
c.add("d");		
//c.remove("b");    //删除指定元素
//c.clear();	//清空集合
//System.out.println(c.contains("b"));	//判断是否包含
//System.out.println(c.isEmpty());
System.out.println(c.size()); 	//获取元素的个数
System.out.println(c);

二、集合的遍历之集合转数组遍历

  • 集合的遍历:其实就是一次湖区集合中的每一个元素
  • 把集合转成数组,可以实现集合的遍历
  • Object[] toArray():用对象数组来接收
Collection c = new ArrayList();
c.add("a");
c.add("b");
c.add("c");
c.add("d");
		
Object[] arr = c.toArray();	//将集合转换成数组
for(int i = 0; i < arr.length; i++) {
	System.out.println(arr[i]); 
}
Collection c = new ArrayList();
c.add(new Student("张三", 23));	    //Object obj = new Student("张三",23);父类引用子类对象,向上提升为Object
c.add(new Student("李四", 24));
c.add(new Student("王五", 25));
c.add(new Student("赵六", 26));
		
Object[] arr = c.toArray();		//将集合转换成数组
for (int i = 0; i < arr.length; i++) {
	//System.out.println(arr[i]);  //不能直接使用getName()方法,因为父类中没有该方法,子类使用的时候需要对对象进行向下转型才能使用。
	Student s = (Student)arr[i];			//向下转型
	System.out.println(s.getName() + "..." + s.getAge());
}

三、collection集合的带AlL功能测试

  • boolean addAll(Collection c)
  • booleanremoveAll(Collection c)

  • boolean containsAll(Collection c)

  • booleanretainAll(Collection c)


1、boolean addAll(Collection c):添加的是一个集合

Collection c1 = new ArrayList();
c1.add("a");
c1.add("b");
c1.add("c");
c1.add("d");
		
Collection c2 = new ArrayList();			//alt + shift + r改名
c2.add("a");
c2.add("b");
c2.add("c");
c2.add("d");
		
//c1.addAll(c2);    //[a,b,c,d,a,b,c,d]  将c2中的每一个元素添加到c1中
c1.add(c2);	    //[a,b,c,d[a,b,c,d]]  将c2看成一个对象添加到c1中
System.out.println(c1);

2、boolean removeAll(Collection c):删除两个集合中的交集

Collection c1 = new ArrayList();
c1.add("a");
c1.add("b");
c1.add("c");
c1.add("d");
		
Collection c2 = new ArrayList();
c2.add("a");
c2.add("b");
c2.add("z");
		
boolean b = c1.removeAll(c2);					
System.out.println(b);   //若交集不为空,则返回ture,删除交集;若交集为空,返回false删除失败
System.out.println(c1);

3、boolean containsAll(Collection c):判断调用的集合是否包含传入的集合

Collection c1 = new ArrayList();
c1.add("a");
c1.add("b");
c1.add("c");
c1.add("d");
		
Collection c2 = new ArrayList();
c2.add("a");
c2.add("b");
c2.add("z");
		
boolean b = c1.containsAll(c2);		//重复无所谓b,若有不重复z的则不包含返回false。
System.out.println(b);
}
4、boolean retainAll(Collection c):取两个集合的交集,取完赋值给调用集合,调用集合c1改变就返回true,不改变返回false
Collection c1 = new ArrayList();
c1.add("a");
c1.add("b");
c1.add("c");
c1.add("d");
		
Collection c2 = new ArrayList();
c2.add("a");
c2.add("b");
c2.add("c");
c2.add("d");
c2.add("e");
c2.add("f");
		
//取交集,如果调用的集合改变就返回true,如果调用的集合不变就返回false
boolean b = c1.retainAll(c2);	//取交集,并赋值给C1
System.out.println(b);
System.out.println(c1);

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值