如下代码:

 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,day14 python内置函数大全

    参考:  https://www.cnblogs.com/pyyu/p/6702896.html http://www.runoob.com/python3/python3-built-in-func ...

  2. 用hmac验证客户端的合法性

    服务器端程序 import os import hmac import socket def auth(conn): secret_key = b'rock' rand_b = os.urandom( ...

  3. WinForm中使用CrystalReport水晶报表——基础,分组统计,自定义数据源

    开篇 本篇文章主要是帮助刚开始接触CrystalReport报表的新手提供一个循序渐进的教程.该教程主要分为三个部分1)CrystalReport的基本使用方法:2)使用CrystalReport对数 ...

  4. AE三维点击查询(3D Identify)的实现(转)

    AE三维点击查询(3D Identify)的实现,类似ArcGIS的Identify对话框/////////////////////////////////////////////////////// ...

  5. linq中如何实现多个条件的联合查询

    目前接触处理数据这一块比较多,在处理内存中的数据源的时候我一般使用的是linq,linq使用起来像sql语句一样,用法简单,功能强大. 最近需要实现一个从两个不同的文件读取不同的数据,然后根据这两个数 ...

  6. Android技术博客精华汇总

    MVC/MVP/MVVM/MVPVM 更好的架构设计 MVC,MVP 和 MVVM 的图示 http://www.apkbus.com/blog-822721-68034.html Android架构 ...

  7. Vue 框架-10-搭建脚手架 CLI

    Vue 框架-10-搭建脚手架 CLI + 批处理快捷启动 脚手架是通过 webpack 搭建的开发环境 使用 ES6 语法 打包和压缩 JS 为一个文件 项目文件在环境中,而不是浏览器 实现页面自动 ...

  8. java 内存分析之构造方法执行过程

    package Demo; public class BirthDate { private int day; private int month; private int year; public ...

  9. 搭建Kafka开发环境

    Kafka版本是:kafka_2.10-0.8.2.1 1.maven工程方式 在pom.xml中配置kafka依赖 1 2 3 4 5 <dependency>     <grou ...

  10. C#代码实现在控制台输入密码显示星号

    在控制台输入的内容C#默认按照字符串进行处理,如果直接让用户一次输入完毕就很难实现 显示星号的功能.但是如果让用户一次只能输入一个字符就,在将用户输入的字符替换为星号就可以实现了! 首先,C#中能让用 ...