java 泛型数组列表
如下代码:
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 泛型数组列表的更多相关文章
- Java基础(七)泛型数组列表ArrayList与枚举类Enum
一.泛型数组列表ArrayList 1.在Java中,ArrayList类可以解决运行时动态更改数组的问题.ArrayList使用起来有点像数组,但是在添加或删除元素时,具有自动调节数组容量的功能,而 ...
- 泛型数组列表 ArrayList
为什么使用泛型数组列表而不使用普通数组? 1.普通数组经常会发生容量太大以致浪费的情况 2.普通数组无法动态更改数组 基本概念: 1.采用[类型参数]的[类]---->[泛型类] 2.[泛型类型 ...
- 「JavaSE 重新出发」05.02 泛型数组列表、包装类
泛型数组列表 ArrayList 是一个采用类型参数(type parameter)的泛型类(generic class). java ArrayList<Employee> staff ...
- Java泛型数组
文章来自http://blog.csdn.net/orzlzro/article/details/7017435 Java 不支持泛型数组.也就是说, List<String>[] ls ...
- Java 泛型数组
Java 不支持泛型数组.也就是说, List<String>[] ls = new ArrayList<String>[10]; 是不支持的,而 List<String ...
- Java 泛型数组问题
Java中不支持泛型数组, 以下代码会编译报错:generic array creation ArrayList<Integer>[] listArr = new ArrayList< ...
- Java对数组和列表的排序1.8新特性
Java对数组列表的排序 数组 Integer[] a = new Integer[] { 1, 2, 3, 4, 5, 6, 9, 8, 7, 4, 5, 5, 6, 6 }; Arrays.sor ...
- 全面总结Java泛型
本文对Java泛型进行了全面的总结.文章内容包括普通泛型.通配符.受限泛型.泛型接口.泛型方法.返回泛型类型实例等等. 虽然Scala创始人Martin Odersky说当年正是因为Java泛型的丑陋 ...
- Java 泛型(Generics)
Generics, 类似C++中的模版. 允许在定义类和接口的时候使用类型参数(type parameters), 声明的类型参数在使用的时候用具体的类型来替换. 如 ArrayList<Str ...
随机推荐
- 网络编程: 基于TCP协议的socket, 实现一对一, 一对多通信
TCP协议 面向连接 可靠的 面向字节流形式的 tcp是基于链接的,必须先启动服务端,然后再启动客户端去链接服务端 TCP协议编码流程: 服务器端: 客户端 实例化对 ...
- Vue2入门路线及资源
前言:最近在学习Vue,感觉对vue+vuex+vue-router算是小小地入门了.想起前期最苦恼也是最费时的事,就是在每个阶段找到合适当前水平的资源或者demo,所以本文我根据我自己的体验,整理了 ...
- ThreeJS两个点作为起始坐标画一个立方体
drawLineBox(new THREE.Vector3(100, 50, 0), new THREE.Vector3(200, 100, 100)); function drawLineBox(s ...
- drupal7 模糊查询接口
$query->condition('card_no', db_like($batch_no).'%', 'LIKE');
- 2016最新Java学习计划
一.Java学习路线图 二.Java学习路线图--视频篇 六大阶段 学完后目标 知识点 配套免费资源(视频+笔 记+源码+模板) 密码 第一阶段 Java基础 入门 学习周期: 35天 ...
- C#防止WebBrowser在新窗口中打开链接页面
在日常的开发中,大家有时需要用WebBrowser加载URL,来实现某些功能.而这时,我们就不希望所打开的页面中的链接,在新窗口中打开,因为这样的话,实际上是用系统默认的浏览器打开了,从而脱离了你的W ...
- Surface电池阈值
Surface电池阈值 笔记本电脑一般都会提供一个电池保养的软件,其主要最用是让电池在插电情况下保持在50%-80%之间,以延长电池寿命,减少电池损耗.而微软自家的Surface却一直没有这个设置. ...
- ASP.NET MVC 实现区域 项目分离 (比较好的方式)
说明: ZRT.Web 是前台网站,目录[D:\ZRT.Web\] ZRT.Admin 是后台管理,目录[D:\ZRT.Web\Applications\Admin\],删除文件[Global.asa ...
- PHP根据秒计算持续时长
/** * 计算持续时长 * * @param int $second 秒数 * @return string $duration 5天10小时43分钟40秒 */ function second2d ...
- SQLSERVER性能计数器的简单剖析
SQLSERVER性能计数器的简单剖析 今晚看了这篇文章:SQL Server 2012新performance counter:非常实用的Batch Resp Statistics 文章里介绍到SQ ...