如下代码:

 package com.company;

 import java.lang.reflect.Array;
import java.util.ArrayList; public class Array_List {
public static void main(String[] args){
ArrayList<String> arr_a=new ArrayList<>();
for(int i=0;i<20;i++){
arr_a.add("ok");
}
String[] int_ar=new String[20];
String[] new_ar= arr_a.toArray(int_ar);
System.out.println(arr_a.get(1));
for(String i:arr_a){System.out.println(i);}
}
}
 package com.company;

 import java.lang.reflect.Array;
import java.util.ArrayList; public class Array_List {
public static void main(String[] args){
ArrayList<Integer> arr_a=new ArrayList<>();
for(int i=0;i<20;i++){
arr_a.add(i);
}
Integer[] int_ar=new Integer[20];
System.out.println(arr_a.get(1));
for(Integer i:arr_a){System.out.println(i);}
}
}

泛型数组列表:

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

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

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

语法:

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

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

方法:

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

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

 package com.company;

 import java.lang.reflect.Array;
import java.util.ArrayList; public class Array_List {
public static void main(String[] args){
ArrayList<Integer> arr_a=new ArrayList<>(10);
for(int i=0;i<20;i++){
arr_a.add(i);
}
Integer[] ar2= new Integer[arr_a.size()];
Integer[] new_ar=(Integer[]) arr_a.toArray(ar2);
System.out.println(new_ar[0]);
}
}

在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

 package com.company;

 import java.lang.reflect.Array;
import java.util.ArrayList; public class Array_List {
public static void main(String[] args){
ArrayList<Integer> arr_a=new ArrayList<>(10);
for(int i=0;i<20;i++){
arr_a.add(i);
}
arr_a.add(3);
arr_a.add(Integer.valueOf(4));
Integer[] ar2= new Integer[arr_a.size()];
Integer[] new_ar=(Integer[]) arr_a.toArray(ar2);
System.out.println(new_ar[arr_a.size()-1]);
System.out.println(new_ar[arr_a.size()-2]);
}
}

 自动拆箱:

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

 import java.util.ArrayList;

 public class Array_List {
public static void main(String[] args){
ArrayList<Integer> arr_a=new ArrayList<>(10);
for(int i=0;i<20;i++){
arr_a.add(i);
}
arr_a.add(3);
arr_a.add(Integer.valueOf(4));
System.out.println(arr_a.get(3));
System.out.println(arr_a.get(3).intValue());
Integer[] ar2= new Integer[arr_a.size()];
Integer[] new_ar=(Integer[]) arr_a.toArray(ar2);
System.out.println(new_ar[arr_a.size()-1]);
System.out.println(new_ar[arr_a.size()-2]);
}
}

java 泛型数组列表的更多相关文章

  1. Java基础(七)泛型数组列表ArrayList与枚举类Enum

    一.泛型数组列表ArrayList 1.在Java中,ArrayList类可以解决运行时动态更改数组的问题.ArrayList使用起来有点像数组,但是在添加或删除元素时,具有自动调节数组容量的功能,而 ...

  2. 泛型数组列表 ArrayList

    为什么使用泛型数组列表而不使用普通数组? 1.普通数组经常会发生容量太大以致浪费的情况 2.普通数组无法动态更改数组 基本概念: 1.采用[类型参数]的[类]---->[泛型类] 2.[泛型类型 ...

  3. 「JavaSE 重新出发」05.02 泛型数组列表、包装类

    泛型数组列表 ArrayList 是一个采用类型参数(type parameter)的泛型类(generic class). java ArrayList<Employee> staff ...

  4. Java泛型数组

    文章来自http://blog.csdn.net/orzlzro/article/details/7017435 Java 不支持泛型数组.也就是说, List<String>[] ls ...

  5. Java 泛型数组

    Java 不支持泛型数组.也就是说, List<String>[] ls = new ArrayList<String>[10]; 是不支持的,而 List<String ...

  6. Java 泛型数组问题

    Java中不支持泛型数组, 以下代码会编译报错:generic array creation ArrayList<Integer>[] listArr = new ArrayList< ...

  7. Java对数组和列表的排序1.8新特性

    Java对数组列表的排序 数组 Integer[] a = new Integer[] { 1, 2, 3, 4, 5, 6, 9, 8, 7, 4, 5, 5, 6, 6 }; Arrays.sor ...

  8. 全面总结Java泛型

    本文对Java泛型进行了全面的总结.文章内容包括普通泛型.通配符.受限泛型.泛型接口.泛型方法.返回泛型类型实例等等. 虽然Scala创始人Martin Odersky说当年正是因为Java泛型的丑陋 ...

  9. Java 泛型(Generics)

    Generics, 类似C++中的模版. 允许在定义类和接口的时候使用类型参数(type parameters), 声明的类型参数在使用的时候用具体的类型来替换. 如 ArrayList<Str ...

随机推荐

  1. 进程间通信IPC -- 管道, 队列

    进程间通信--IPC(Inter-Process Communication) 管道 from multiprocessing import Pipecon1,con2 = Pipe()管道是不安全的 ...

  2. CSS3选择器:nth-child和:nth-of-type之间的差异——张鑫旭

    一.深呼吸,直接内容 :nth-child和:nth-of-type都是CSS3中的伪类选择器,其作用近似却又不完全一样,对于不熟悉的人对其可能不是很区分,本文就将介绍两者的不同,以便于大家正确灵活使 ...

  3. CIO在数字化转型中如何正确定位?

    在数字化转型的大潮下,CIO和传统企业应如何抓住数字生态系统中的机遇?CIO该如何面对领导力.资金.技术和人才的挑战? Gartner研究总监陈勇表示:IT部门在企业中应转变成为一个引领创新的部门,C ...

  4. MySql与SqlServer的区别

    1.SQL Server 是Microsoft 公司推出的关系型数据库管理系统.具有使用方便可伸缩性好与相关软件集成程度高等优点,可跨越从运行Microsoft Windows 98 的膝上型电脑到运 ...

  5. Android app启动是出现白屏或者黑屏如何解决?

    1.为什么 APP 启动时会出现白屏或者黑屏? 当打开一个 Activity 时,如果这个 Activity 所属的应用还没有在运行,系统会为这个 Activity 所属的应用创建一个进程,但进程的创 ...

  6. linux 文件操作命令 touch、cat、more、less、head、tail

    touch /bin/touch 创建空文件 linux 创建文件可以使用特殊符号,/除外 touch test test1 创建了两个文件touch "test test1" 创 ...

  7. Python-Image 基本的图像处理操作

    Python-Image 基本的图像处理操作,有需要的朋友可以参考下. Python 里面最常用的图像操作库是 Image library(PIL),功能上,虽然还不能跟Matlab比较,但是还是比较 ...

  8. .NET基础一

    .NET FrameWork是用于Windows的新托管代码编程模型,它包含CLR(Common Language Runtime)以及BCL(Base CLass Library)构成. 一.CLR ...

  9. [UI] 精美UI界面欣赏[11]

    精美UI界面欣赏[11]

  10. orcl数据库查询重复数据及删除重复数据方法

    工作中,发现数据库表中有许多重复的数据,而这个时候老板需要统计表中有多少条数据时(不包含重复数据),只想说一句MMP,库中好几十万数据,肿么办,无奈只能自己在网上找语句,最终成功解救,下面是我一个实验 ...