zoukankan      html  css  js  c++  java
  • java 泛型数组列表

    如下代码:

     1 package com.company;
     2 
     3 import java.lang.reflect.Array;
     4 import java.util.ArrayList;
     5 
     6 public class Array_List {
     7     public static void main(String[] args){
     8         ArrayList<String> arr_a=new ArrayList<>();
     9         for(int i=0;i<20;i++){
    10             arr_a.add("ok");
    11         }
    12         String[] int_ar=new String[20];
    13         String[] new_ar= arr_a.toArray(int_ar);
    14         System.out.println(arr_a.get(1));
    15         for(String i:arr_a){System.out.println(i);}
    16     }
    17 }
     1 package com.company;
     2 
     3 import java.lang.reflect.Array;
     4 import java.util.ArrayList;
     5 
     6 public class Array_List {
     7     public static void main(String[] args){
     8         ArrayList<Integer> arr_a=new ArrayList<>();
     9         for(int i=0;i<20;i++){
    10             arr_a.add(i);
    11         }
    12         Integer[] int_ar=new Integer[20];
    13         System.out.println(arr_a.get(1));
    14         for(Integer i:arr_a){System.out.println(i);}
    15     }
    16 }

    泛型数组列表:

    之前我们接触的原始数组,无法确定动态确定数组的大小,在初始化数组的时候定义其大小,之后如果在改变其大小比较麻烦。于是就有ArrayList类实现动态数组大小。

    当当前数组列表超过当前长度,会把当前的数组元素拷贝到大的数组内。

     1 public class Array_List {
     2     public static void main(String[] args){
     3         ArrayList<Integer> arr_a=new ArrayList<>(10);
     4         for(int i=0;i<20;i++){
     5             arr_a.add(i);
     6         }
     7         System.out.println(arr_a.get(1));
     8         for(Integer i:arr_a){System.out.println(i);}
     9     }
    10 }

    语法:

    ArrayList<参数类型>  变量名字= new ArrayList<参数类型可以没有>(容量大小也可以不写)

    注意:只能是引用对象才可以使用ArrayList 如果基本数据类型想使用的话需要使用装箱器才可以使用!!!

    方法:

    添加、删除、获取等方法。

    其中获取和设置(get、set方法):如果数据列表中为空或者超出索引set会报错。我们可以用先在插入对象的时候,可以使用ArrayList,获取的时候 我们进行转换到普通数组使用[数字]风格来获取数组的元素。如下:

     1 package com.company;
     2 
     3 import java.lang.reflect.Array;
     4 import java.util.ArrayList;
     5 
     6 public class Array_List {
     7     public static void main(String[] args){
     8         ArrayList<Integer> arr_a=new ArrayList<>(10);
     9         for(int i=0;i<20;i++){
    10             arr_a.add(i);
    11         }
    12         Integer[] ar2= new Integer[arr_a.size()];
    13         Integer[] new_ar=(Integer[]) arr_a.toArray(ar2);
    14         System.out.println(new_ar[0]);
    15     }
    16 }

    在ArrayList<>中参数类型不允许基本数据类型比如:int 、float、double等,但是基本数据类型也对应的对象,比如:int=>Integer   float=>Float    double->Double  short=>Short  bytes=>Bytes boolean=>Boolean  我将对应的类叫做包装器。

    对象包装器类是不可变的,一般构造器生成,就不允许改变其中的值,同时包装的类还是final,因此不能定义子类。

    自动装箱:

    在如上基本类型的包装器中,在调用ArrayList的时候,我们可以直接使用:arr_a.add(3);但是实际编译器帮我们实现这个过程:arr_a.add(Integer.valueOf(4));这个过程叫做自动装箱autoboxing

     1 package com.company;
     2 
     3 import java.lang.reflect.Array;
     4 import java.util.ArrayList;
     5 
     6 public class Array_List {
     7     public static void main(String[] args){
     8         ArrayList<Integer> arr_a=new ArrayList<>(10);
     9         for(int i=0;i<20;i++){
    10             arr_a.add(i);
    11         }
    12         arr_a.add(3);
    13         arr_a.add(Integer.valueOf(4));
    14         Integer[] ar2= new Integer[arr_a.size()];
    15         Integer[] new_ar=(Integer[]) arr_a.toArray(ar2);
    16         System.out.println(new_ar[arr_a.size()-1]);
    17         System.out.println(new_ar[arr_a.size()-2]);
    18     }
    19 }

     

     自动拆箱:

    比如我们获取上面的数组的元素值。System.out.println(arr_a.get(3)); 相当于System.out.println(arr_a.get(3).intValue());  我们叫做自动拆箱。包括变量的自增都属于自动拆箱在自动装箱!

     1 import java.util.ArrayList;
     2 
     3 public class Array_List {
     4     public static void main(String[] args){
     5         ArrayList<Integer> arr_a=new ArrayList<>(10);
     6         for(int i=0;i<20;i++){
     7             arr_a.add(i);
     8         }
     9         arr_a.add(3);
    10         arr_a.add(Integer.valueOf(4));
    11         System.out.println(arr_a.get(3));
    12         System.out.println(arr_a.get(3).intValue());
    13         Integer[] ar2= new Integer[arr_a.size()];
    14         Integer[] new_ar=(Integer[]) arr_a.toArray(ar2);
    15         System.out.println(new_ar[arr_a.size()-1]);
    16         System.out.println(new_ar[arr_a.size()-2]);
    17     }
    18 }
  • 相关阅读:
    laravel 汇总数据
    Sway
    利用 Windows API Code Pack 修改音乐的 ID3 信息
    Windows Server 2012 R2 设置 NTP 服务
    Visual Studio "14" CTPs
    Win8.1 查看 “Windows 体验指数“
    json2csharp & json 格式化
    山寨版 WP8.1 Cortana 启动 PC
    Newtonsoft.Json WindowPhone7.1
    Cisco交换机基础命令 + Win Server08 R2 多网卡配置链路聚合
  • 原文地址:https://www.cnblogs.com/evilliu/p/7677881.html
Copyright © 2011-2022 走看看