zoukankan      html  css  js  c++  java
  • java之静态导入、可变参数、Collections集合工具类、集合嵌套

    1.在源码中经常会出现,静态导入 import static XXX.YYY,导入后YYY可以直接使用

     1 import static java.util.Map.Entry;
     2 public class HashMapTest {
     3     public static void main(String[] args) {
     4         //1,创建hashmap集合对象。
     5         Map<Student,String> map = new HashMap<Student,String>();
     6 
     7         //取出元素。键值对方式
     8         //Set<Map.Entry<Student, String>> entrySet = map.entrySet();
     9         Set<Entry<Student, String>> entrySet = map.entrySet();
    10 
    11         //for (Map.Entry<Student, String> entry : entrySet) {
    12         for (Entry<Student, String> entry : entrySet) {
    13             Student key = entry.getKey();
    14             String value = entry.getValue();
    15             System.out.println(key.toString()+"....."+value);
    16         }
    17     }
    18 }

    2.可变参数

    当一个方法可以接受多个参数且类型一致时,可以使用可变参数或者数组导入,但数组的长度是固定的,且必须传入数组。

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

    其实这个书写完全等价与

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

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

     1     public static void main(String[] args) {
     2         int[] arr = {21,89,32};
     3         int sum = add(arr);
     4         System.out.println(sum);
     5 //其实编译成的class文件,将这些元素先封装到一个数组中,在进行传递。
     6         sum = add(21,89,32);//可变参数调用形式
     7         System.out.println(sum);
     8         
     9     }
    10 
    11     //JDK1.5之后写法
    12     public static int add(int...arr){//参数列表中只能拥有一个可变参数,且可变参数的位置必须在最后
    13         int sum = 0;
    14         for (int i = 0; i < arr.length; i++) {
    15             sum += arr[i];
    16         }
    17         return sum;
    18     }

    3.Collections集合工具类(用于处理Collection接口中的集合)

    1public static <T> void sort(List<T> list) // 集合元素排序
    2 //排序前元素list集合元素 [33,11,77,55]
    3 Collections.sort( list );
    4 //排序后元素list集合元素 [11,33,55,77]
    5 
    6public static void shuffle(List<?> list) //  集合元素存储位置打乱
    7 //list集合元素 [11,33,55,77]
    8 Collections.shuffle( list );
    9 //使用shuffle方法后,集合中的元素为[77,33,11,55],每次执行该方法,集合中存储的元素位置都会随机打乱

    4.集合嵌套《Map集合中的key值最好为基本数据类型的包装类、String类,自定义类(需要重写hashcode()和equals())》

     1 集合嵌套并不是一个新的知识点,仅仅是集合内容又是集合,如Collection集合嵌套、Collection集合与Map集合相互嵌套、Map集合嵌套。
     2 ArrayList嵌套 ArrayList
     3     ArrayList< ArrayList<String> >
     4     Collection< ArrayList<Integer> >
     5 Map嵌套 ArrayList
     6 HashMap<String, ArrayList<Person>>
     7 ArrayList< HashMap<String, String>>
     8 Map集合嵌套
     9 HashMap<String, HashMap<String,String>>
    10 HashMap<String, HashMap<Person,String>>

    5.集合继承体系的面向对象思想

    接口:用来明确所有集合中该具有的功能,相当于在定义集合功能标准;

    抽象类:把多个集合中功能实现方式相同的方法,抽取到抽象类实现,具体集合不再遍写,继承使用即可;

    具体类:继承抽象类,实现接口,重写所有抽象方法,达到具备指定功能的集合。每个具体集合类,根据自身的数据存储结构方式,对接口中的功能方法,进行不同方式的实现。

  • 相关阅读:
    基于redis实现可靠的分布式锁
    基于react实现无限分级菜单
    利用免费cdn加速webpack单页应用
    研究一下javascript的模块规范(CommonJs/AMD/CMD)
    基于ReactCSSTransitionGroup实现react-router过渡动画
    react + iscroll5 实现完美 下拉刷新,上拉加载
    如何在多线程leader-follower模式下正确的使用boost::asio。
    【深入浅出Linux网络编程】 “实践 -- TCP & UDP”
    【hbase0.96】基于hadoop搭建hbase的心得
    【hadoop2.2(yarn)】基于yarn成功执行分布式map-reduce,记录问题解决过程。
  • 原文地址:https://www.cnblogs.com/mlf19920916/p/12154926.html
Copyright © 2011-2022 走看看