Collection

集合

数组的特点:

  1. 只能存储同一种数据类型的数据
  2. 一旦初始化,长度固定
  3. 数组中的元素与元素之间的内存地址是连续的。
    ===Object类型的数组可以存储任意类型的数据

集合:集合是存储对象数据的集合容器
集合比数组的优势:

  1. 集合何以存储任意类型的对象数据,数组只能存储同一种数据类型的数据
  2. 集合的长度可以发生变化,数组的长度固定

Collection 单列集合的根接口
(文章中暂时没有考虑集合的泛型,最后有一篇文章总结了泛型的应用)

Collection下有很多子接口,其中两个经常使用的集合接口是List和Set

  1. List接口:实现了List接口的集合类,具有有序,可重复的特点。了解List接口点击这里!!
    1.1 List下的 ArrayList 实现类 了解ArrayList点击这里!!
    1.2 List下的 LinkedList 实现类了解LinkedList点击这里!!
    1.3 List下的 Vector 实现类(不常用)了解Vector点击这里!!
  2. Set接口:实现了Set接口的集合类,具有无序,不可重复的特点。
    2.1 Set下的实现类 HashSet 了解HashSet点击这里!!
    2.2 Set下的实现类 TreeSet 了解TreeSet点击这里!!

点击了解Java中泛型在集合中应用

Collection 接口的方法:
1.增加:

add(E e)	//返回的结果是一个boolean值,添加成功为true,失败为false
addAll(Collection c)	//把一个集合添加到另一个集合中去

2.删除:

clear() 		//清空集合中的元素
remove(Object o) 	//删除集合中的指定元素,成功返回true,失败为false
removeAll(Collection c)	 //删除与c集合中相同的元素
retainAll(Collection c)		//保留与c集合中相同的元素

3.查看:

Size()	//返回集合中元素的个数

4.判断:

contains(Object o)	//判断集合是否包含某个元素o,包含为true,不包含为false
containsAll(Collection c) //判断集合是否包含c集合中的所有元素,全部包含为true,否则为false
isEmpty()	//判断集合是否为空元素 空为true 不空为false

5.迭代:

toArray()	//把集合中的元素全部存储到一个Object的数组中返回
iterator()	//结果返回一个迭代器Iterator

迭代器的工作原理了解详情点击这里

举例1:

package com.test
import java.util.ArrayList;
import java.util.Collection;

//	Collection 接口的方法:(暂时不考虑集合的泛型)
//	
//	1.	增加:
//		add(E e) //返回的结果是一个boolean值,添加成功为true,失败为false
//		addAll(Collection c) //把一个集合添加到另一个集合中去
//	2.删除:
//		clear() //清空集合中的元素
//		remove(Object o) //删除集合中的指定元素,成功返回true,失败为false
//		removeAll(Collection c) //删除与c集合中相同的元素
//		retainAll(Collection c)	//保留与c集合中相同的元素
//	3.查看:
//		size()	//返回集合中元素的个数

public class Coll {
	
	public static void main(String[] args) {
		
		//添加的方法
		Collection c= new ArrayList();//ArrayList是Collection接口的一个实现类
		c.add("美国队长");
		c.add("钢铁侠");
		c.add("雷神");
		System.out.println("集合c的元素:"+c);//集合c的元素:[美国队长, 钢铁侠, 雷神]
		System.out.println("集合c中元素的个数:"+c.size());//集合c中元素的个数:3
		
		Collection c2 = new ArrayList();
		c2.add("钢铁侠");
		c2.add("黑寡妇");
		c2.add("浩克");
		System.out.println("集合c2的元素:"+c2);//集合c中元素的个数:3
		
		c.addAll(c2);
		System.out.println("集合c添加集合c2后:"+c);//集合c添加集合c2后:[美国队长, 钢铁侠, 雷神, 钢铁侠, 黑寡妇, 浩克]
		
		c.remove("浩克");
		System.out.println("移除浩克后集合c的元素:"+c);//移除浩克后集合c的元素:[美国队长, 钢铁侠, 雷神, 钢铁侠, 黑寡妇]
		
//		c.removeAll(c2);
//		System.out.println("删除与c2集合中相同的元素后:"+c);
//		删除与c2集合中相同的元素后:[美国队长, 雷神]
		
		c.retainAll(c2);
		System.out.println("保留与c2集合中相同的元素:"+c);//保留与c2集合中相同的元素:[钢铁侠, 钢铁侠, 黑寡妇]
		
		c.clear();
		System.out.println("清空集合c的元素:"+c);//清空集合c的元素:[]
	}    
}

举例2:

package com.test;
import java.util.ArrayList;
import java.util.Collection;
// 	4.判断:
//		contains(Object o)	//判断集合是否包含某个元素o,包含为true,不包含为false
//		containsAll(Collection c) //判断集合是否包含c集合中的所有元素,全部包含为true,否则为false
//		isEmpty()	//判断集合是否为空元素 空为true 不空为false

class Person{	
	int id;
	String name;	
	public Person(int id, String name) {
		super();
		this.id = id;
		this.name = name;
	}
	@Override
	public String toString() {
		return "{编号:"+this.id+" 代号:"+this.name+"}";
	}
	@Override
	public boolean equals(Object obj) {
		Person p=(Person) obj;
		return this.id==p.id;
	}
	@Override
		public int hashCode() {
			return super.hashCode();
		}
}
public class Coll2 {

	public static void main(String[] args) {
		
		Collection c= new ArrayList();//ArrayList是Collection接口的一个实现类
		c.add("美国队长");
		c.add("钢铁侠");
		c.add("雷神");
		System.out.println("集合c的元素:"+c);//集合c的元素:[美国队长, 钢铁侠, 雷神]
		System.out.println("集合c是否为空:"+c.isEmpty());//集合c是否为空:false
		System.out.println("c中是否有美国队长?"+c.contains("美国队长"));//c中是否有美国队长?true
		
		Collection c2=new ArrayList();
		c2.add(new Person(1, "蜘蛛侠"));
		c2.add(new Person(2, "幻世"));
		c2.add(new Person(3, "黑豹"));
		System.out.println("集合才c2的元素"+c2);//集合才c2的元素[{编号:1 代号:蜘蛛侠}, {编号:2 代号:幻世}, {编号:3 代号:黑豹}]
		
		System.out.println("存在该元素?"+c2.contains(new Person(3, "黑豹")));
		//存在该元素?true
		//注意:Person中重写了equals()方法,只要id相同即视为同一个元素,所以这里返回了true。如果没有重写equals()方法,这里返回false。因为contains()方法内部使用equals()方法进行比较
		
		Collection c3=new ArrayList();
		c3.add(new Person(1, "蜘蛛侠"));
		c3.add(new Person(2, "幻世"));
		System.out.println("c2包含c3中的所有元素吗:"+c2.containsAll(c3));//c2包含c3中的所有元素吗:true
	}
}

举例3:

package com.test;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;

//	5.迭代:
//		toArray()	//把集合中的元素全部存储到一个Object的数组中返回

public class Coll3 {

	public static void main(String[] args) {
		
		Collection c= new ArrayList();//ArrayList是Collection接口的一个实现类
		c.add("美国队长");
		c.add("钢铁侠");
		c.add("雷神");
		
		Object[] arr=c.toArray();
		System.out.println("集合c的元素:"+Arrays.toString(arr));//集合c的元素:[美国队长, 钢铁侠, 雷神]
		
		Collection c2=new ArrayList();
		c2.add(new Person(1, "蜘蛛侠"));
		c2.add(new Person(2, "幻世"));
		c2.add(new Person(3, "黑豹"));
		Object[] arr2=c2.toArray();
		for (int i = 0; i < arr2.length; i++) {
			Person p=(Person) arr2[i];
			if(p.id==1) {
				System.out.println(p);
			}
		}
		//{编号:1 代号:蜘蛛侠}
	}
}

举例4:

package com.test;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
  
//	5.迭代:
//		iterator()  //结果返回一个迭代器Iterator
//		
//		迭代器的作用:就是用于抓取集合中的元素
//			迭代器的方法:
//			hasNext()	//判断是否有下一个元素可迭代,有返回true,没有返回false
//			next()		//取出元素
//			remove()	//移除迭代器最后一次返回的元素

public class Coll4 {

	public static void main(String[] args) {

		Collection c= new ArrayList();//ArrayList是Collection接口的一个实现类
		c.add("美国队长");
		c.add("钢铁侠");
		c.add("雷神");
		c.add("黑寡妇");
		
		//遍历集合的元素----1.toArray()方法
//		Object[] arr= c.toArray();
//		for (int i = 0; i < arr.length; i++) {
//			System.out.print(arr[i]+",");
//		}
		
		//遍历集合的元素----2.iterator()
		Iterator it = c.iterator();
		while(it.hasNext()) {
			System.err.print(it.next()+",");
		}
		//美国队长,钢铁侠,雷神,黑寡妇,		
	}   
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值