zoukankan      html  css  js  c++  java
  • 集合框架__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.
    	}
    }



  • 相关阅读:
    github提交代码403
    针对七牛含有特殊字符的文件名,对特殊字符编码处理
    去除字符串所有空格
    按关键词匹配度排序
    服务器监控-Zabbix
    数据同步
    字符串-占位符
    Redis序列化
    Redis监听回调
    时间计算
  • 原文地址:https://www.cnblogs.com/Joure/p/4337217.html
Copyright © 2011-2022 走看看