集合框架__JDK1.5新特性__【增强for循环】【可变参数】【静态导入】


在集合框架操作中JDK1.5版本的一些新特性

增强for循环

格式:
for(数据类型 变量名 :被遍历的集合/数组)
{}
优点:
对基本数据类型数组操作时,可以直接遍历获取;而迭代器需要装箱成对象之后才能获取;传统需要手动获取
简化书写,但也有许多局限性
增强for循环对集合进行遍历,只能用于集合/数组元素的获取,不能对集合进行操作
Iterator迭代除了遍历,还可以进行remove集合中的元素
ListIterator还可以对集合进行增删改查的动作

传统for和增强for的区别:
增强for的局限性:必须有遍历的目标(集合或数组)
在遍历数组时,建议使用传统for

操作示例:

import java.util.*;
class ForEachDemo 
{
	public static void main(String[] args) 
	{
		ArrayList<String> al = new ArrayList<String>();
		al.add("a01");
		al.add("a03");
		al.add("a02");
		for (String s : al )			       //一、对字符串类型的集合对象进行操作
		{
//			s = "haha";	//增强for只能取出,不能对al进行操作
			sop(s);	
		}
		sop(al);	//打印al
/*		Iterator<String> it = al.iterator();//迭代
		while (it.hasNext())
		{
			sop(it.next());
		}
*/		
		int[] arr = {2,5,6};
		for (int i : arr )				//二、对基本数据类型数组元素操作,可以直接遍历获取
		{
			sop("i: "+i);	//局限性,无法操作角标
		}
		for (int x=0; x<arr.length ;x++ ) //传统for
		{
			sop("i:"+arr[x]);//可以对角标进行操作
		}
		
		HashMap<Integer,String> hm = new HashMap<Integer,String>();//三、对Map集合对象进行操作
		hm.put(1,"a");
		hm.put(2,"b");
		hm.put(3,"c");
//		Set<Integer> keySet = hm.keySet();	//简化书写
		for (Integer i : hm.keySet() )			 //1、keySet取出方法
		{
			sop(i+" : "+hm.get(i));
		}
//		Set<Map.Entry<Integer,String>> entrySet = hm.entrySet();
//		for (Map.Entry<Integer,String> me: entrySet())
		for (Map.Entry<Integer,String> me: hm.entrySet())//2、entrySet取出方法
		{
			sop(me.getKey()+"  :  "+me.getValue());
		}
	}
	public static void sop(Object obj)
	{
		System.out.println(obj);
	}
}

可变参数:

其实是一种数组参数的简写形式,不用每一次都建立数组对象,只要将元素作为参数传递即可,隐式的将这些参数封装成了数组,。JVM自动完成封装
注意事项:可变参数一定要定义在参数列表的最后边

示例:

class ParaMethodDemo 
{
	public static void main(String[] args) 
	{
		//show(3,4);
/*		int[] arr = {3,4};//虽然少定义了方法,但是每次都要定义一个数组作为参数
		show(arr);
		int[] arr1 = {3,4,5}
		show{arr1}
*/		show("haha",2,3,3,5,85,6);//可变参数一定要定义在参数列表的最后边
//		show();
	}
	public static void show(String str , int... arr)	//3、可变参数,不用再new数组
	{
		sop(arr.length);
	}
/*	public static void show(int[] arr)	//2、将参数封装成数组,实现参数间接可变
	{}
	public static void show(int a, int b)//1、参数列表不同时多个函数重载
	{
		sop(a+","+b);
	}
*/	public static void sop(Object obj)
	{
		System.out.println(obj);
	}
} 

ImportStatic静态导入

导入的是该类的静态成员
一个类被静态导入后,调用该类的静态方法就不用再(类名.方法名),可以直省略类名来调用
当类名重名时,要指定具体的包名;当方法重名时,要指定具体的对象或类

示例:

import java.util.*;
import static java.util.Arrays.*;//导入的是Arrays类中所有静态成员
import static jaav.lang.System.*;//			System
class  StaticImport
{
	public static void main(String[] args) 
	{
		int[] arr = {3,6,9};
		sort(arr);			//省略Arrays.
		int index = binarySearch(arr,1);//省略Arrays.
		sop(Arrays.toString(arr));		//Object中也有toString所以不能省略,以明确调用的是哪个
		sop("Index= "+index);	
	}
	public static void sop(Object obj)
	{
		out.println(obj);//省略 System.
	}
}



原文地址:https://www.cnblogs.com/Joure/p/4337217.html