(80)高级for循环(尤其是在集合中的简写形式)、可变参数、静态导入

一、高级for循环
①格式:for(数据类型 变量名:被遍历的集合(Collection)或者数组)
{
}
②例子演示(在list、set中对输出简化)

Collection<String> coll=new ArrayList<String>();
        coll.add("abc");
        coll.add("a");
        coll.add("cc");
        for(String s:coll) {
            System.out.println(s);

        }

③对集合进行遍历,只能获取元素,但是不能对集合进行操作。
迭代器除了遍历,还可以remove集合中元素的动作。
如果使用ListIterator,还可以在遍历过程中对集合进行增删改查操作。

④传统for和高级for有什么区别呢?
高级for有一个局限性,必须有被遍历的目标

⑤建议是:在遍历数组时还是使用传统方式,因为传统for可以定义脚标,可对脚标的元素或者脚标进行操作
在map集合中用foreach简化

HashMap<Integer,String> hm=new HashMap<Integer,String>();
        hm.put(1, "a");
        hm.put(2, "abc");
        hm.put(3, "c");
        //第一种方法简化
        Set<Integer> ks=hm.keySet();
        for(Integer i:ks) {
            sop(hm.get(i));
        }
        //第二种方法原
        Set<Map.Entry<Integer, String>> s3=hm.entrySet();
        Iterator<Map.Entry<Integer, String>> it3=s3.iterator();
        while(it3.hasNext()) {
            Map.Entry<Integer, String> me=it3.next();
            sop("键:"+me.getKey()+"   值:"+me.getValue());
        }
        //第二种方法简化
        for(Map.Entry<Integer,String> me : hm.entrySet())
        {
            System.out.println(me.getKey()+"------"+me.getValue());
        }

二、可变参数
在重载函数中,有种形式,只是参数个数不同,参数类型等都是相同的,写重载是比较麻烦的。可以将数据放入数组中,这样写一个方法,形式参数为数组,这样可以简化书写。但是若操作的数据个数不同,还需要创建不同长度的数组,再调用方法,也比较麻烦。
在JDK1.5版本后出现了新方法,以下进行演示:
可变参数其实就是数组参数的简写形式,不用每一次手动的建立数组对象,只要将要操作的元素作为参数传递即可,隐式将这些参数封装成了数组。
形式:数据类型…变量名称
注意事项:在使用这个新特性时,可变参数一定要定义在参数列表的在后面。

public static void main(String[] args) {
    show();//0
    show(2,3,4);//3
    show(2,3,5,6);//4


}
public static  void show(int...arr) {
    System.out.println(arr.length);
    //其他语句;
}
}

三、静态导入
①当类名重名时,要指定具体的包名。
packa/Demo.class
packb\Demo.class
要创建b包下的Demo类对象写法:new packb.Demo();
②当方法重名时,指定具备所属的对象或者类

import java.util.*;
public class kebianshuzu {
public static void main(String[] args) {

    int[] arr= {1,2,3,4};
    Arrays.sort(arr);
    int index=Arrays.binarySearch(arr, 3);
    System.out.println(Arrays.toString(arr));
    System.out.println("index="+index); 
}

以上使用的方法均为静态,每次都得写Arrays类,比较麻烦,要想到静态导入。

import java.util.*;//若没有写static 则导入的全是类
import static java.util.Arrays.*;//导入的是Arrays这个类中的所有静态方法
import static java.lang.System.*;//简写输出语句
public class Demo {
public static void main(String[] args) {

    int[] arr= {1,2,3,4};
    sort(arr);
    int index=binarySearch(arr, 3);
    out.println(Arrays.toString(arr));
    out.println("index="+index);

Arrays.toString(arr):不能省略Arrays,原因是Demo类默认继承了Object类,其有toString命名的方法,Arrays中也有该名称的方法,所以方法名重名,要指定具备的类名或者对象名。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值