如下代码:

 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. 【学习笔记】--- 老男孩学Python,day8 知识点补充 join,列表不能循环删除,深浅copy

    1. 补充基础数据类型的相关知识点 1. str. join() 把列表变成字符串 2. 列表不能再循环的时候删除. 因为索引会跟着改变 3. 字典也不能直接循环删除. 把要删除的内容记录在列表中. ...

  2. ECMAScript 5和ECMAScript6的新特性以及浏览器支持情况

    ECMAScript简介: 它是一种由Ecma国际(前身为欧洲计算机制造商协会)制定和发布的脚本语言规范,javascript在它基础上经行了自己的封装.但通常来说,术语ECMAScript和java ...

  3. c#实现内存映射文件共享内存

    原文:http://blog.csdn.net/wangtiewei/article/details/51112668 内存映射文件是利用虚拟内存把文件映射到进程的地址空间中去,在此之后进程操作文件, ...

  4. 分布式部署下的报表调用 API调用 权限问题以及性能方案

     背景描述: 客户的实际情况是需要在具体系统构架前,通过与厂商讨论确定最终的系统架构方案. 需求是客户自己有管理系统,希望建立一个独立的报表服务器,该报表服务器可以对多个管理系统提供报表服务,不知 ...

  5. SpringBoot 之HelloController

    1.搭建环境 1.1 新建一个maven项目,一路下一步 1.2 打开pom 文件,首先增加<parent></parent>标签: <parent> <gr ...

  6. 深入理解net core中的依赖注入、Singleton、Scoped、Transient(一)

    相关文章: 深入理解net core中的依赖注入.Singleton.Scoped.Transient(一) 深入理解net core中的依赖注入.Singleton.Scoped.Transient ...

  7. Centos 使用C++11 编译

    今天编译代码,发现使用auto后无法编译,我的当前linux内核版本:(4.7之后即可支持C++11) 这时,在编译末尾加入 -std=c++11 就可以正常编译了.如:

  8. 【Java】数组使用

    package aaa; public class aaa { public static void main(String args[]) { int a[]={1,2,3,4}; for(int ...

  9. 《图解HTTP》总结 - 思维导图版

      对具体内容感兴趣的,可以去  http://www.51test.space/archives/2830  免费下载<图解HTTP>.

  10. Oracle EBS 更改物料说明后,在MTL_SYSTEM_ITEMS_B表中无变化

    需要再中文和英文环境同时修改: 程序里,可以通过初始session语言环境来解决.