如下代码:

 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. HTML5 MutationObserver检测页面劫持

    好久没写博客了,业务一直在变化,陆陆续续的做了很多web app,被业务流淹没就很少有机会去反思,前端技术发展如此之快,常常有种不学则退的恐慌,一种技术还没吃透就涌出新的技术,然后一波人又打着各种旗帜 ...

  2. JavaScript--浅谈DOM操作

    JavaScript之浅谈DOM操作 1.理解DOM: DOM(Document Object Model ,文档对象模型)一种独立于语言,用于操作xml,html文档的应用编程接口. 怎么说,我从两 ...

  3. Pig parallel reduce并行执行数

    parallel语句可以附加到Pig Latin中任一个关系操作符后面,然后它会控制reduce阶段的并行,因此只有对与可以触发reduce过程的操作符才有意义.     可以触发reduce过程的操 ...

  4. html的button疑问

    button是可以自动垂直居中的,随便给个高度,它都会自动垂直居中.用控制台查看computed属性里也没有发现和垂直相关的,贴出来希望以后能够了解或有高手看到来解惑小弟:)

  5. 用Use Case获取需求的方法是否有缺陷,还有哪些地方需要改进

    (提示:是否对所有应用领域都适用?使用的方便性?......) Use Case使用原则: 1.通过讲简单的故事来传递消息 讲故事是最有效的人与人交流信息的途径.通过讲故事(Use Case),团队成 ...

  6. Leetcode题解之Container With Most Water

    1.题目描述 2.题目分析 首先,这个题可以使用暴力解法,时间复杂度是O(n^2),这个显然是最容易的做法,但是效率不够高,题目提供了一种解法,使用两个指针,一个从头向尾部,另外一个从尾部向头部,每一 ...

  7. 浅析NSTextContainer

    浅析NSTextContainer TextKit中的NSTextContainer有点晦涩难懂,如果想用TextKit实现文本分页的效果,你是必须要使用NSTextContainer的...... ...

  8. oracle 复制表结构 复制表数据 sql 语句

    1. 复制表结构及其数据: create table table_name_new as select * from table_name_old 2. 只复制表结构: create table ta ...

  9. Mosquitto安装调试实录

    1. 安装 以Centos 7.x为例,先安装依赖项(笔者使用阿里云资源,部分依赖项可能未列出): yum install gcc-c++ yum install openssl-devel yum ...

  10. Vue安装以及Vue项目创建以及Vue Devtools安装

    这几天一直在学习Vue.js框架. 因为以前没有前端项目的经验,也没学过什么前端框架,所以,对于vue.js的学习有些不知所措. 在vue.js官网看教程,按照教程指点,可以不用脚手架开发,也可以搭建 ...