Java面向对象
Java异常
Java数组
Java常用类
Java集合
Java IO流
Java线程
Java反射
Socket编程
Java注解开发
Java GoF设计模式
HashMap
Java内存模型
Java线性表

Java中Collection的基本操作

boolean:add(E e) 向集合中添加元素e

boolean:addAll(Collection c) 把集合c中所有元素都添加到当前集合中

void:clear() 清空当前集合中所有的元素

boolean:contains(Object o) 在当前集合中判断是否包含元素o

boolean:containsAll(Collection c) 判断当前集合是否包含集合c中的所有元素

boolean:equals(Object o)

int:hashCode()

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

Iterator:iterator() 返回当前集合的迭代器

boolean:remove(Object o) 从当前集合中删除第一个与o匹配的元素

boolean:removeAll(Collection c) 在当前集合中删除在c集合中出现的所有元素

int:size() 返回集合中元素的个数

Object[]:toArray() 把集合转换为数组

T[]:toArray(T[] a)

package com.wkcto.chapter05.collection;

import java.util.ArrayList;
import java.util.Collection;

/**
 * 演示Collection集合的基本操作
 * @author 蛙课网
 *
 */
public class Test01 {

	public static void main(String[] args) {
		//1)创建Collection集合, Collection是一个接口,需要赋值实现类对象
		Collection	 collection = new ArrayList<>();
		
		//2) 向集合中添加元素, 默认添加Object类型数据
		collection.add("aa");
		collection.add("bb");
		collection.add( 123 ); 		//如果添加基本类型,系统会自动装箱, 把包装类对象添加到集合中
		collection.add( true );
		
		//3) 直接打印, collection引用 的是ArrayList对象, ArrayList的爷爷类AbstractCollection重写了toString()
		System.out.println( collection );  //[aa, bb, 123, true]
		
		//4)判断
		System.out.println( collection.isEmpty() );		//false
		System.out.println( collection.size());			//4
		System.out.println( collection.contains("bb"));	//true
		
		//5)删除
		collection.remove("bb");
		System.out.println( collection );
		
	}

}
package com.wkcto.chapter05.collection;

import java.util.ArrayList;
import java.util.Collection;
/**
 * 集合泛型与集合之间的相互操作
 * @author 蛙课网
 *
 */
public class Test02 {

	public static void main(String[] args) {
		//在实际应用中,一个集合中一般只存储同一类型的数据, 可以在定义集合时,通过泛型约束集合中元素的类型
		//Collection后面的尖括弧指定集合元素的类型, 这就是泛型, 泛型就是把数据类型当作参数
		Collection<String> collection = new ArrayList<>();
		
		//在添加元素时, collection集合就只能添加String类型的数据
		collection.add("gg");
		collection.add("jj");
		collection.add("dd");
		collection.add("mm");
		//如果添加的数据不是String类型,编译报错, 这就是泛型的好处,可以在编译时进行数据类型的检查
//		collection.add(123);  
		
		collection.add( "mm");
		collection.add( "jj");
		
		System.out.println( collection );  		//[gg, jj, dd, mm, mm, jj]

		//删除jj, remove()只删除第一个匹配的元素
		collection.remove("jj");
		System.out.println( collection );		//[gg, dd, mm, mm, jj]
		
		//创建第二个集合
		Collection<String> collection22 = new ArrayList<>();
		collection22.addAll(collection);  //把collection中 的所有元素添加到当前集合中
		System.out.println( collection22 );
		collection22.remove("mm");
		System.out.println( collection22 );   //[gg, dd, mm, jj]
		//判断collection集合中是否包含collection22集合中所有的元素
		System.out.println( collection.containsAll(collection22));  	//true
		//判断collection22集合中是否包含collection集合中所有的元素
		System.out.println( collection22.containsAll(collection));		//true
		//在colllection中删除在collection22集合中出现的元素
		collection.removeAll(collection22);
		System.out.println( collection );  		//[]
	}

}
package com.wkcto.chapter05.collection;

import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
/**
 * 集合的迭代器
 * @author 蛙课网
 *
 */
public class Test03 {

	public static void main(String[] args) {
		//1)创建一个存储String字符串的Collection集合
		Collection<String> collection = new ArrayList<>();
		
		//2) 添加元素
		collection.add("gg");
		collection.add("jj");
		collection.add("dd");
		collection.add("jj");
		collection.add("dd");
		collection.add("jj");
		//3)直接打印
		System.out.println( collection );   	//[gg, jj, dd, jj, dd, jj]
		
		//4) 遍历集合中的元素
		for (String str : collection) {
			//把collection集合中的每个 元素赋值给局部变量str
			System.out.println( str );
		}
		
		//5)把所有的dd删除
//		collection.remove("dd") ;  		//删除第一个匹配的元素
//		collection.removeAll(c); 		//删除出现在c集合中的所有元素, 依次判断当前集合中每个 元素是否在c集合中,如果存在就删除
		
		//foreach循环仅用于遍历
	/*	for (String string : collection) {
			if ("dd".equals(string)) {
				collection.remove("dd");
			}
		}*/
		
		//6) 迭代器遍历
		//6.1 获得迭代器对象
		Iterator<String> iterator = collection.iterator();
		/*
		 * iterator.hasNext()用于判断是否还有下个元素没访问
		 * iterator.next()返回下个元素, 游标下移
		 * 刚刚获得迭代器时, 迭代器的游标指向第一个元素的前面
		 */
		//6.2迭代遍历
		while( iterator.hasNext() ){
			String str = iterator.next();
			System.out.print( str + "\t");
		}
		System.out.println();
		//循环完成后, iterator游标已经指向最后一个元素的后面, 如果还想要使用iterator迭代器,需要重写获得
		iterator = collection.iterator();   //重新获得迭代器后,游标指向 第一个元素的前面
		//6.3 迭代删除
		while (iterator.hasNext()) {
			String string = iterator.next();
			if ("dd".equals(string)) {
				iterator.remove();  	 	//迭代删除
			}
		}
		System.out.println( collection );
		
		//重新获得迭代器, 游标指向 第一个元素的前面
		iterator = collection.iterator();
		//获得了迭代器后, 如果再通过集合的add()/remove()/clear()等方法修改了集合的结构, 再迭代时,可能会产生异常
		//获得了迭代器后, 不能再通过集合的add()/remove()/clear()等方法修改集合的结构
		// 可以在通过集合的add()/remove()/clear()等方法修改集合的结构后, 重新获得迭代器对象
//		collection.add("dd");
		System.out.println( collection );
		//再迭代遍历
		while (iterator.hasNext()) {
			String string = (String) iterator.next();
//			System.out.print( string + "\t");
			if( "jj".equals(string) ){
//				collection.remove("jj");
			}
		}
	}

}