黑马程序员-----集合框架类(四) 高级for循环、方法的可变参数及静态导入

1.1 高级for循环(示例1)

格式:
for(数据类型 变量名 : 被遍历的集合(Collection)或者数组)
{

}

对集合进行遍历。
只能获取集合元素。但是不能对集合进行操作。

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

1.1.2 传统for和高级for有什么区别呢?

高级for有一个局限性。必须有被遍历的目标。

 1 示例1:
 2 import java.util.*;
 3
 4 class ForEachDemo
 5 {
 6     public static void main(String[] args)
 7     {
 8
 9
10         ArrayList<String> al = new ArrayList<String>();
11
12         al.add("abc1");
13         al.add("abc2");
14         al.add("abc3");
15
16
17         for(String s : al)
18         {
19             //s = "kk";
20             System.out.println(s);
21         }
22
23         System.out.println(al);
24         /*
25         Iterator<String> it = al.iterator();
26
27         while(it.hasNext())
28         {
29             System.out.println(it.next());
30         }
31         */
32
33         int[] arr = {3,5,1};
34
35         for(int x=0; x<arr.length; x++)
36         {
37             System.out.println(arr[x]);
38         }
39         for(int i : arr)
40         {
41             System.out.println("i:"+i);
42         }
43
44
45         HashMap<Integer,String> hm = new HashMap<Integer,String>();
46
47         hm.put(1,"a");
48         hm.put(2,"b");
49         hm.put(3,"c");
50
51         Set<Integer> keySet = hm.keySet();
52         for(Integer i : keySet)
53         {
54             System.out.println(i+"::"+hm.get(i));
55         }
56
57 //        Set<Map.Entry<Integer,String>> entrySet = hm.entrySet();
58 //        for(Map.Entry<Integer,String> me : entrySet)
59
60         for(Map.Entry<Integer,String> me : hm.entrySet())
61         {
62             System.out.println(me.getKey()+"------"+me.getValue());
63         }
64
65     }
66 }

PS:建议在遍历数组的时候,还是希望使用传统for。因为传统for可以定义脚标。

2.1方法的可变参数,JDK1.5版本出现的新特性(示例2)
在使用时注意:可变参数一定要定义在参数列表最后面。

 1 示例2
 2 class  ParamMethodDemo
 3 {
 4     public static void main(String[] args)
 5     {
 6         //show(3,4);
 7         /*
 8         //虽然少定义了多个方法。
 9         但是每次都要定义一个数组。作为实际参数。
10
11         int[] arr = {3,4};
12         show(arr);
13
14         int[] arr1 = {2,3,4,5};
15         show(arr1);
16         */
17
18         /*
19         可变参数。
20         其实就是上一种数组参数的简写形式。
21         不用每一次都手动的建立数组对象。
22         只要将要操作的元素作为参数传递即可。
23         隐式将这些参数封装成了数组。
24
25         */
26         show("haha",2,3,4,5,6);
27         //show(2,3,4,5,6,4,2,35,9,"heh");
28         //show();
29
30     }
31     public static void show(String str,int... arr)
32     {
33         System.out.println(arr.length);
34     }
35     /*
36     public static void show(int[] arr)
37     {
38
39     }
40     */
41     /*
42     public static  void show(int a,int b)
43     {
44         System.out.println(a+","+b);
45     }
46     public static  void show(int a,int b,int c)
47     {}
48     */
49 }

3.1 StaticImport 静态导入(示例3)

当类名重名时,需要指定具体的包名。
当方法重名是,指定具备所属的对象或者类

示例3:
import java.util.*;
import static  java.util.Arrays.*;//导入的是Arrays这个类中的所有静态成员。
import static java.util.Collections.*;

import static  java.lang.System.*;//导入了System类中所有静态成员。

class  StaticImport //extends Object
{
    public static void main(String[] args)
    {

        out.println("haha");
        int[] arr = {3,1,5};

        sort(arr);
        int index = binarySearch(arr,1);
        out.println(Arrays.toString(arr));
        System.out.println("Index="+index);

        ArrayList al = new ArrayList();
        al.add(1);
        al.add(3);
        al.add(2);

        out.println(al);

        sort(al);
        out.println(al);
    }
}
时间: 2024-11-07 11:50:53

黑马程序员-----集合框架类(四) 高级for循环、方法的可变参数及静态导入的相关文章

黑马程序员-----集合框架类(三) Map集合

黑马程序员-----集合框架类(三) Map集合 1.1 Map集合:该集合存储键值对.一对一对往里存.而且要保证键的唯一性. 1,添加. put(K key, V value) putAll(Map<? extends K,? extends V> m) 2,删除. clear() remove(Object key) 3,判断. containsValue(Object value) containsKey(Object key) isEmpty() 4,获取. get(Object ke

黑马程序员-----集合框架类(一)

1.1 为什么出现集合类? 面向对象语言对事物的体现都是以对象的形式,所以为了方便对多个对象的操作,就对对象进行存储,集合就是存储对象最常用的一种方式. 1.2 数组和集合类同是容器,有何不同? 数组虽然也可以存储对象,但长度是固定的:集合长度是可变的.数组中可以存储基本数据类型,集合只能存储对象. 1.3 集合类的特点 集合只用于存储对象 集合长度是可变的 集合可以存储不同类型的对象. 1.4 集合框架的构成及分类: 2.1 Collection接口: Collection定义了集合框架的共性

黑马程序员——集合框架类总结

------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 为什么会出现集合类? Java语言是面向对象的语言,所有命令都是操作对象的,有集合类的出现就可以操作对象 数组和集合类的区别是什么呢? 数组中可以存储基本类型的数据,也可以存储对象,集合类只能存储对象 集合类的特点有什么? 集合只适用于存储对象,长度是可变化的,集合可以存储不同类型的集合. 集合类Collection接口,子类接口有List接口和Set接口,List接口下含有ArrayList

黑马程序员-集合框架(Map和Collections)

--Java培训.Android培训.iOS培训..Net培训.期待与您交流!--- 一.概述 Map是一种存储键值对的存储容器,而且保证键的唯一性.提供一种以"键"标识"值"的数据存储方式.接口形式为:Map<K,V>,其中K是此映射所维护的键的类型,V是映射值的类型.其有两个常用子类,HashMap和TreeMap,另有HashTable与HashMap功能类似,是早期版本.三者特点与不同如下: HashMap:JDK1.2版本出现,底层使用哈希表数

黑马程序员-集合工具类和1.5新特性

集合框架的工具类:collecttions Collections 的方法全是静态的 List没有排序功能,所以java定义了Collections工具类. 比较器无法传给list,只能传给Set.但是集合工具类有此方法 1.排序: comparable:    sort(List<T> list) 根据元素的自然顺序 对指定列表按升序进行排序. comparator:    sort(List<T> list, Comparator<? super T> c) 根据比

黑马程序员-集合框架

集合:面向对象语言对事物的体现都是以对象的形式,所以为了方便对多个对象的操作,就对对象进行存储,集合就是存储对象最常用的一种方式. 集合框架: Java集合框架是指java的集合类.Collection 接口是一组允许重复的对象.Set 接口继承 Collection,但不允许重复,使用自己内部的一个排列机制. List 接口继承 Collection,允许重复,以元素安插的次序来放置元素,不会重新排列.Map接口是一组成对的键-值对象,即所持有的是key-value pairs.Map中不能有

黑马程序员-集合框架(List和Set)

一.概述 集合是一种可变数据项的容器,具有统一的父类接口Collection<E>(Map并没有继承之),与其子集合的关系如下 图,集合的特点是长度可变,可以存储多种类型的对象(不加泛型时).这也是与数组的两点最大的不同. java集合类关系图 Collection最为根接口,List.Set.Queue接口均直接继承自它,Map接口虽然不是直接继承自Collection,但是接口中使用到了Collection,即Map的数据也是使用Collection存储的. 研究集合必不可少的是先研究Co

黑马程序员——集合框架(一)

package com.yang.ex; import java.util.ArrayList; /*集合类: * 面向对象语言的体现都在对象行使,为了方便对对象操作,集合就是最常见的储存对象 * * 数组与集合类的不同: * 数组的长度是固定的,并且类型是固定的的,但是集合的长度是可变的.数组中可以储存基本数据类型,但是集合智能存储对象 * * 集合类的特点: * 集合只用于储存对象,集合的长度是可变的.集合合一储存不同类型的对象 * 每一个容器对数据的存储方式都有不同 * 每一个存储方式称为

黑马程序员-集合(二)contains()方法的内部探索

------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 我们知道集合是用来存储对象的.在他们实现了众多的接口我们以Arraylist为列子 所有已实现的接口: Serializable, Cloneable, Iterable<E>, Collection<E>, List<E>, RandomAccess 集合当中有这样的一个方法.在API文档当中是下面这样解释的. contains(Object o) 如果此列表中包含