静态导入 可变参数与collectiions集合工具 集合嵌套

静态导入

在导包的过程中我们可以直接导入静态部分,这样某个类的静态成员就可以直接使用了。在源码中经常会出现静态导入。

静态导入格式:                static

import static XXX.YYY;   导入后YYY可直接使用。

   

例如:Map.Entry的访问,简化后为Entry

import static java.util.Map.Entry;

publicclass HashMapTest {

     publicstaticvoid main(String[] args) {

         //1,创建hashmap集合对象。

         Map<Student,String>map = new HashMap<Student,String>();

 

         //取出元素。键值对方式

         //Set<Map.Entry<Student, String>> entrySet = map.entrySet();

         Set<Entry<Student, String>>entrySet = map.entrySet();

 

         //for (Map.Entry<Student, String> entry : entrySet) {

         for (Entry<Student, String>entry : entrySet) {

              Student key = entry.getKey();

              String value = entry.getValue();

              System.out.println(key.toString()+"....."+value);

         }

     }

 

 

可变参数

对其简化成如下格式:

修饰符 返回值类型 方法名(参数类型... 形参名){  }

其实这个书写完全等价与

修饰符 返回值类型 方法名(参数类型[] 形参名){  }

只是后面这种定义,在调用时必须传递数组,而前者可以直接传递数据即可。

jdk1.5以后。出现了简化操作。... 用在参数上,称之为可变参数。

例子

publicclass ParamDemo {

     publicstaticvoid main(String[] args) {

         int[] arr = {21,89,32};

         int sum = add(arr);

         System.out.println(sum);

         sum = add(21,89,32);//可变参数调用形式

         System.out.println(sum);

        

     }

 

     //JDK1.5之后写法

     publicstaticint add(int...arr){

         int sum = 0;

         for (int i = 0; i < arr.length; i++) {

              sum += arr[i];

         }

         return sum;

     }

l  上述add方法在同一个类中,只能存在一个。因为会发生调用的不确定性

注意:如果在方法书写时,这个方法拥有多参数,参数中包含可变参数,可变参数一定要写在参数列表的末尾位置。

 

Collections集合工具类

l  public static <T> void sort(List<T> list) // 集合元素排序

//排序前元素list集合元素 [33,11,77,55]

Collections.sort( list );

//排序后元素list集合元素 [11,33,55,77]

 

l  public static void shuffle(List<?> list) //  集合元素存储位置打乱

//list集合元素 [11,33,55,77]

Collections.shuffle( list );

//使用shuffle方法后,集合中的元素为[77,33,11,55],每次执行该方法,集合中存储的元素位置都会随机打乱

 

集合嵌套

集合嵌套并不是一个新的知识点,仅仅是集合内容又是集合,如Collection集合嵌套、Collection集合与Map集合相互嵌套、Map集合嵌套。

l  ArrayList嵌套 ArrayList

     ArrayList< ArrayList<String>>

     Collection< ArrayList<Integer>>

l  Map嵌套 ArrayList

HashMap<String, ArrayList<Person>>

ArrayList< HashMap<String, String>>

l  Map集合嵌套

HashMap<String, HashMap<String,String>>

HashMap<String, HashMap<Person,String>>

 

实例

HashMap<String,HashMap<person,String>>
map=new HashMap<String,HashMap<person,String>>();
HashMap<person,String> m1=
new HashMap<person,String>();
m1.put(new person("王亿",22),"java1203班");
m1.put(new person("张原硕",22),"java1203班");
m1.put(new person("骚猪",23),"java0929班");
m1.put(new person("张总强",24),"java0929班");
map.put("oracle", m1);
map.put("qianghu",m2);
//keyset+增强for
Set<String> schools=map.keySet();
//biali
for(String school:shools){
//根据学校名称获取班级名称
HashMap<person,String> classes=map.get(school);
//获取该班级的所有人set
set<person> persons=classes.keySet();
//遍力集和set得到的每一个人
for(person p:persons){
//根据每一个人得到所有对应的班级名称
String classname=classes.get(p);
System.out.println(
"班级名称为"+school+"班级名we"+classname+"姓名热"+p.getName()+"nailingwei"+p.getAge()
);
}
}

 

原文地址:https://www.cnblogs.com/1997WY/p/10442398.html