java自学之旅(4)集合类2

集合框架:
1)Collection
     addAll、containsAll
2)Iterator(迭代器)
     hasNext、next方法
     remove方法
     增强型for循环
3)泛型机制
      泛型在集合中的应用

addAll:该方法需要我们传入一个集合,并将该集合中的所有元素添加到当前集合中。
如果次Collection由于调用而发生更改,则返回true。

containsAll:该方法用于判断当前集合是否包含给定集合中的所有元素,若包含则返回true。

hasNext、next方法:
1)迭代器用于遍历集合元素
2)迭代器Iterator是一个接口,集合在重写Collection的Iterator()方法时利用内部类提供的迭代器实现。
3)Iterator提供了统一的遍历集合元素的方式
     — boolean hasNext()   判断集合是否还有元素可以遍历
     — E next()   返回迭代的下一个元素

remove方法
1)在使用迭代器遍历集合时,不能通过集合的的remove方法来删除集合元素,否则会抛出并发更改异常。我们可以通过迭代器自身提供的remove()方法来删除通过next()迭代出的元素。— void remove ()
2)迭代器的删除方法是在元集合中删除元素。
3)注意:在调用remove方法前,必须通过迭代器的next()方迭代过元素,那么删除的就是这个元素。并且不能再次调用remove方法,除非再次调用next()后方可再次调用。

增强型for循环
该循环只用与遍历集合或数组。
for (循环类型 e : 集合或数组){
                 循环体
      }
本质:新循环并非新的语法,而是在编译过程中,编译器会将新循环转化为迭代器的模式。所以新循环本质上是迭代器。

泛型在集合中的应用:
泛型的本质是参数化类型。在类、接口、方法的定义过程当中,所操作的数据类型被传入的参数指定。
java泛型机制广泛应用于集合框架中。所有的集合类型都带有泛型参数,这样在创建集合时可以指定放入集合中元素的类型。java编译器可以据此进行类型检查,这样可以减少代码在运行时出现错误的可能性。

package mycollection;

import java.util.ArrayList;
import java.util.Collection;
import java.util.HashSet;
import java.util.Iterator;

public class TestCollection2 {
	public static void main(String[] args) {
		testAddAllAndContainsAll();
		System.out.println("****************************************************");
		testIterator();
		System.out.println("****************************************************");
		testRemove();
		System.out.println("****************************************************");
		testForeach();
	}

	/**测试addAll和containsAll方法**/
	public static void testAddAllAndContainsAll(){
		Collection<String> c1 = new ArrayList<>();
		c1.add("java");
		c1.add("cpp");
		c1.add("php");
		c1.add("c#");
		c1.add("objective-c");
		System.out.println(c1);
		
		Collection<String> c2 = new HashSet<>();
		c2.addAll(c1);
		System.out.println(c2);//为什么元素复制后输出的的顺序发生改变??
		
		Collection<String> c3 = new ArrayList<>();
		c3.add("java");
		c3.add("cpp");
		System.out.println(c1.containsAll(c3));
	}
	
	/**使用Iterator的hasNext方法、next方法遍历集合**/
	public static void testIterator(){
		Collection<String> c1 = new ArrayList<>();
		c1.add("java");
		c1.add("cpp");
		c1.add("php");
		c1.add("c#");
		c1.add("objective-c");
		
		Iterator<String> it = c1.iterator();
		while (it.hasNext()){
			String str = it.next();//判断集合是否还有元素可以遍历
			System.out.println(str);//返回迭代的下一个元素
		}
		}
	
		/**测试Iterator的remove方法**/
		public static void testRemove(){
			Collection<String> c1 = new ArrayList<>();
			c1.add("java");
			c1.add("cpp");
			c1.add("php");
			c1.add("c#");
			c1.add("objective-c");
			System.out.println(c1);
			Iterator<String> it = c1.iterator();
			while (it.hasNext()){
				String str = it.next();
				//用indexOf方法判断字符串元素是否包含c
				if (str.indexOf("c")!=-1){ //为什么这行里的c用单引号也可以??
					it.remove();
				}
			}
			System.out.println(c1);
		}
		
		/**使用增强型for循环遍历集合**/
		public static void testForeach(){
			Collection<String> c1 = new ArrayList<>();
			c1.add("java");
			c1.add("cpp");
			c1.add("php");
			c1.add("c#");
			c1.add("objective-c");
			for (String str : c1){
				//将遍历到的字符串元素转化为大写后输出
				System.out.println(str.toUpperCase()+" ");
			}
		}
	
}

	
		



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值