• 《温故而知新》JAVA基础八


    集合接口与泛型

    1. 定义: 集合接口会操作一系列相同属性数据的对象类型的数据结构,类似于数组,但是相对于数组来说更显得高端大气

    2. 集合的接口分为Collention和Map两大类,不直接操作,而是通过子类的实现来操作

    3. 常用的集合有

    • Collection->List里面的ArrayList
    • Collection->Set里面的HashSet
    • Map(以键值对的形式)里面的HashMap
    1. Set和List的区别
    Set 接口实例存储的是无序的,不重复的数据。
    List 接口实例存储的是有序的,可以重复的元素。
    

    遍历数据

    1. 遍历 ArrayList
    //申明数据类型是String对象类型的集合
    List<String> list = new List<String>()
    //向集合里面添加数据
    list.add("hello")
    list.add("world")
    1. //第一种方式:通过foreatch
    for (String str : list) {            //也可以改写for(int i=0;i<list.size();i++)这种形式
            System.out.println(str);
     }
    
    2. //第二种遍历,把链表变为数组相关的内容进行遍历
         String[] strArray=new String[list.size()];
         list.toArray(strArray);
         for(int i=0;i<strArray.length;i++) //这里也可以改写为  foreach(String str:strArray)这种形式
         {
            System.out.println(strArray[i]);
         }
    3. //第三种遍历 使用迭代器进行相关遍历
         
         Iterator<String> ite=list.iterator();
         while(ite.hasNext())//判断下一个元素之后有值
         {
             System.out.println(ite.next());
         }
         
    
    1. 遍历Map
    import java.util.*;
     
    public class Test{
         public static void main(String[] args) {
          Map<String, String> map = new HashMap<String, String>();
          map.put("1", "value1");
          map.put("2", "value2");
          map.put("3", "value3");
          
          //第一种:普遍使用,二次取值
          System.out.println("通过Map.keySet遍历key和value:");
          for (String key : map.keySet()) {
           System.out.println("key= "+ key + " and value= " + map.get(key));
          }
          
          //第二种
          System.out.println("通过Map.entrySet使用iterator遍历key和value:");
          Iterator<Map.Entry<String, String>> it = map.entrySet().iterator();
          while (it.hasNext()) {
           Map.Entry<String, String> entry = it.next();
           System.out.println("key= " + entry.getKey() + " and value= " + entry.getValue());
          }
          
          //第三种:推荐,尤其是容量大时
          System.out.println("通过Map.entrySet遍历key和value");
          for (Map.Entry<String, String> entry : map.entrySet()) {
           System.out.println("key= " + entry.getKey() + " and value= " + entry.getValue());
          }
        
          //第四种
          System.out.println("通过Map.values()遍历所有的value,但不能遍历key");
          for (String v : map.values()) {
           System.out.println("value= " + v);
          }
         }
    }
    

    泛型

    1. 定义:所谓泛型值得就是函数得参数得数据类型可以是任何得数据类型,不会因为参数类型的不同导致程序崩溃
    // 泛型方法 printArray           //E类泛型            
       public static < E > void printArray( E[] inputArray )
       {
          // 输出数组元素            
             for ( E element : inputArray ){        
                System.out.printf( "%s ", element );
             }
             System.out.println();
        }
    
    使用:
           // 创建不同类型数组: Integer, Double 和 Character
            Integer[] intArray = { 1, 2, 3, 4, 5 };
            Double[] doubleArray = { 1.1, 2.2, 3.3, 4.4 };
            Character[] charArray = { 'H', 'E', 'L', 'L', 'O' };
                  System.out.println( "整型数组元素为:" );
            printArray( intArray  ); // 传递一个整型数组
     
            System.out.println( "
    双精度型数组元素为:" );
            printArray( doubleArray ); // 传递一个双精度型数组
     
            System.out.println( "
    字符型数组元素为:" );
            printArray( charArray ); // 传递一个字符型数组
    
    1. 有界得类型参数
    public static <T extends Comparable<T>> T maximum(T x, T y, T z){
        //extends 后面接上上线
    }
    
    1. 泛型类,类后加上参数类型
    public class Box<T> {
       
      private T t;
     
      public void add(T t) {
        this.t = t;
      }
     
      public T get() {
        return t;
      }
     
      public static void main(String[] args) {
        Box<Integer> integerBox = new Box<Integer>();
        Box<String> stringBox = new Box<String>();
     
        integerBox.add(new Integer(10));
        stringBox.add(new String("菜鸟教程"));
     
        System.out.printf("整型值为 :%d
    
    ", integerBox.get());
        System.out.printf("字符串为 :%s
    ", stringBox.get());
      }
    }
    
    1. 泛型通配符?
    public class GenericTest {
        
        public static void main(String[] args) {
            List<String> name = new ArrayList<String>();
            List<Integer> age = new ArrayList<Integer>();
            List<Number> number = new ArrayList<Number>();
            
            name.add("icon");
            age.add(18);
            number.add(314);
     
            getData(name);
            getData(age);
            getData(number);
           
       }
     //List<?>代表List<String>,List<Integer等
       public static void getData(List<?> data) {
          System.out.println("data :" + data.get(0));
       }
    }
    
  • 相关阅读:
    大象中原
    自己动手,编写神经网络程序,解决Mnist问题,并网络化部署-网络化部署
    自己动手,编写神经网络程序,解决Mnist问题,并网络化部署-编写网络
    py4CV例子2.5车牌识别和svm算法重构
    py4CV例子3Mnist识别和ANN
    【CC评网】2013.第41周 不求排版,简单就好
    【CC评网】2013.第39周 漂亮的作息表
    【CC评网】2013.第38周 要阅读 要有好工具
    书评 《软件随想录》
    BerkeleyDB 多索引查询
  • 原文地址:https://www.cnblogs.com/allenxieyusheng/p/9018676.html
Copyright © 2020-2023  润新知