Collection

Collection

java.util.Collection
集合,用于存储一组元素。提供了维护集合的相关操作。
其派生了两个子接口:
List:可重复集
Set:不可重复集
元素是否重复是依靠元素自身equals方法比较的结果而定的。
集合存放元素存放的是元素的引用(地址)

boolean add(E e)

向集合中添加元素。
当元素成功添加到集合后返回true

int size()

返回当前集合的元素个数

boolean isEmpty()

判断当前集合是否不含任何元素(空集合)

void clear()

清空集合元素

boolean contains(E e)

判断当前集合是否包含给定元素。	
集合判断是否包含指定元素是依靠元素的equals比较的结果。
只要集合中有元素与给定元素比较为true,则认为包含。

boolean remove(E e)

从集合中删除指定元素。删除成功后返回true
只删除集合中第一个与给定元素equals比较为true的元素。

集合的批量操作

boolean addAll(Collection c)

取并集
将给定集合中的所有元素添加到当前集合中
添加后只要当前集合元素数量发生了变化,则返回true

boolean containsAll(Collection c)

判断当前集合是否包含给定集合中的所有元素

boolean removeAll(Collection c)

从c1集合中删除两个集合中共有的元素。

遍历集合

Collection提供了统一的遍历集合元素的方式:迭代器模式
遍历集合遵循:问,取,删的步骤,其中删除不是必须操作。

Iterator iterator()

获取用于遍历当前集合的迭代器
java.util.Iterator是一个接口,规定了用于遍历集合元素的相关方法,不同的集合提供了相应的实现类。
无需记住那些实现类的名字,只将他们当做Iterator即可。
eg:
Collection c = new ArrayList();
c.add("one");
c.add("#");
c.add("two");
c.add("#");
c.add("three");
c.add("#");
c.add("four");
//获取用于遍历当前集合的迭代器
Iterator it = c.iterator();
/*
 * boolean hasNext() 问的过程
 * 该方法是判断集合中是否还有元素可以取出
 * 
 * E next() 取得过程
 * 获取集合中下一个元素。
 */
while(it.hasNext()) {
	String str = (String)it.next();
	if("#".equals(str)) {
		/*
		 * 在使用迭代器遍历集合时,不要使用集合的方法增删元素,否则会引发异常。
		 */
//				c.remove(str);
		/*
		 * 迭代器提供了remove方法,用来删除通过next方法取出的元素。
		 */
		it.remove();
	}
	System.out.println(str);
}
System.out.println(c);

集合支持泛型

泛型是用来约束集合中元素的类型。
eg:
Collection <String> c = new ArrayList <String>();
//只能添加String类型的元素了。
c.add("one");
c.add("two");
c.add("three");
c.add("four");

//遍历集合元素
for(String str:c) {
	System.out.println(str);
}
/*
 * 迭代器也应当指定泛型,
 * 而泛型的实际类型应当与它遍历的集合的泛型类型一致。
 */
Iterator<String> it = c.iterator();
while(it.hasNext()) {
	//获取元素时不需要再造型了。
	String str = it.next();
	System.out.println(str);
}

集合转换为数组

集合提供了一个方法toArray,可以将当前集合转换为数组
若给定的数组可用(数组可以存放集合所有元素)时则使用该数组,若不可用,会自动创建一个与给定数组同类型的数组。
eg:
Collection<String> c = new ArrayList<String>();
c.add("one");
c.add("two");
c.add("three");
c.add("four");

/*
 * 集合提供了一个方法toArray,可以将当前集合转换为数组
 */
//		Object[] array = c.toArray();
/*
 * 若给定的数组可用(数组可以存放集合所有元素)时则使用该数组,
 * 若不可用,会自动创建一个与给定数组同类型的数组。
 */
String[] array = c.toArray(new String[c.size()]);
System.out.println("len:"+array.length);
for(String str:array) {
	System.out.println(str);
}

数组转换为集合

需要注意,转换只能转换为List集合

使用的是数组的工具类Arrays的静态方法asList
只能转换为List集合的主要原因是:Set不能存放重复元素。
所以若转换为Set集合可能出现丢失元素的情况。
eg:
String[] array = {"one","two","three","four"};
		
List<String> list = Arrays.asList(array);
System.out.println(list);

/*
 * 向集合中添加一个元素
 * 
 * 实际上下面的代码会抛出异常。原因在于,该集合是由数组转换过来的,
 * 那么该集合就表示原来的数组,所以对集合的操作就是对数组的操作。
 * 那么添加元素会导致原数组扩容,那么就不能表示原来的数组了。
 * 所以不允许向该集合添加新元素。
 */
//		list.add("five");
//		System.out.println(list);

//修改集合元素,数组元素也会改变
list.set(1, "2");
System.out.println(list);
//输出数组元素
for(String str:array) {
	System.out.println(str);
}

/*
 * 若希望增删元素,需要另创建一个集合
 */
//		List<String> list1 = new ArrayList<String>();
//		list1.addAll(list);
/*
 * 所有的集合都提供了一个带有Collection类型参数的构造方法。
 * 该构造方法称为:复制构造器
 * 作用是在创建当前集合的同时,集合中包含给定集合中的所有元素。
 */
List<String>list1 = new ArrayList<String>(list);
list1.add("five");
System.out.println(list1);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值