动态数组 - ArrayList
前言
如果数组的大小要随时间变化,那么数组操作起来就比较麻烦。
在C++中,这种情况要用到动态向量Vector。
而Java中,提供了一种叫做ArrayList的泛型数组结构类型,提供相似的作用。
其实都是一种东西,只是在使用上面有那么一点区别。
本文将讲解ArrayList的具体使用方法。
ArrayList常用方法
先要做如下说明:
1. 因为 Java 不支持运算符的重载,所以不支持下标运算符,无法使用[]运算符来存取元素。
2. ArrayList成员必须是对象类型(泛型不支持基本类型)。也就是int,float这些不能作为成员。如果要使用这些基本类型,必须使用其对象表达方式。(下文会讲解转换技巧)
// 构造一个空数组列表
ArrayList <T> ();
// 设置数组列表指定位置的元素值
void set (int index, T obj);
// 获取数组列表指定位置的元素值
T get (int index);
// 删除一个元素
T remove (int index);
// 往数组列表里添加元素
boolean add (T obj);
// 往数组列表的指定位置插入元素
void add (int index, T obj);
// 获取当前容量
int size();
示例代码
package test;
import java.util.ArrayList;
public class Java7Learn {
public static void main(String[] args){
// 测试数组
int [] a = {1, 3, 5, 7, 9};
// 创建ArrayList并赋值
ArrayList<Integer> array = new ArrayList<Integer>();
for (int i:a) {
array.add(i);
}
// 打印结果
for (int i:array) {
System.out.print(i);
System.out.print(" ");
}
System.out.println();
// 将第一个元素设置为9
array.set(0, 9);
// 删除第3个元素
array.remove(2);
// 再打印结果
for (int i:array) {
System.out.print(i);
System.out.print(" ");
}
System.out.println();
}
}
运行结果

小结
没什么多讲的,多用几次就会了。
动态数组 - ArrayList的更多相关文章
- 数据结构与算法系列2 线性表 使用java实现动态数组+ArrayList源码详解
数据结构与算法系列2 线性表 使用java实现动态数组+ArrayList源码详解 对数组有不了解的可以先看看我的另一篇文章,那篇文章对数组有很多详细的解析,而本篇文章则着重讲动态数组,另一篇文章链接 ...
- [数据结构1.2-线性表] 动态数组ArrayList(.NET源码学习)
[数据结构1.2-线性表] 动态数组ArrayList(.NET源码学习) 在C#中,存在常见的九种集合类型:动态数组ArrayList.列表List.排序列表SortedList.哈希表HashTa ...
- C#动态数组ArrayList和List<T>的比较
C#中一维动态数组(即列表)分ArrayList和List<T>两种,其容量可随着我们的需要自动进行扩充 一.ArrayList类(少用) ArrayList位于System.Collec ...
- 关于C#中的动态数组ArrayList
在C#中,如果需要数组的长度和元素的个数随着程序的运行不断改变,就可以使用ArrayList类,该类是一个可以动态增减成员的数组. 一.ArrayList类与Array类的区别 ArrayList类实 ...
- C#动态数组ArrayList
在C#中,如果需要数组的长度和元素的个数随着程序的运行不断改变,就可以使用ArrayList类,该类是一个可以动态增减成员的数组. 一.ArrayList类的常用属性和方法 1. ArrayList类 ...
- C# 集合类(一)动态数组ArrayList
C# 集合类自己经常用到: 数组(Array).动态数组(ArrayList).列表(List).哈希表(Hashtable).字典(Dictionary),对于经常使用的这些数据结构,做一个总结,便 ...
- 动态数组ArrayList的使用
1.定义类 package com.realhope.rmeal.bean; /** * * @author Wucy * 菜谱类 */ public class Menu{ private Inte ...
- C#深入研究ArrayList动态数组自动扩容原理
1 void Test1() { ArrayList arrayList = new ArrayList(); ; ; i < length; i++) { arrayList.Add(&quo ...
- 常用数据结构-线性表及Java 动态数组 深究
[Java心得总结六]Java容器中——Collection在前面自己总结的一篇博文中对Collection的框架结构做了整理,这里深究一下Java中list的实现方式 1.动态数组 In compu ...
随机推荐
- js在mootools框架下的new Class
首先,在HTML文件中引入mootools.js. mootools-more.js.mootools-core.js,然后就能使用mootools封装的一些特性. 几乎类似于面向对象. mootoo ...
- Swift - 自动布局库SnapKit的使用详解3(约束优先级,约束做动画)
1,约束优先级我们使用SnapKit的时候,还可以定义约束的优先级.这样当约束出现冲突的时候,优先级高的约束覆盖优先级低的约束.具体优先级可以放在约束链的结束处. (1)可以设置如下几种优先级 pri ...
- MyEclipse 修改代码不生效
最近得了一个项目,java开发的web项目,修改代码时,无论怎么改,都不生效: 各种度娘,没用. 原因是没有建立发布设定 这个东西我开始不理解它的作用,现在知道了: mysqleclipse项目在一个 ...
- GCJ 2015-Qualification-B Infinite House of Pancakes 枚举,思路,误区 难度:3
https://code.google.com/codejam/contest/6224486/dashboard#s=p1 题目不难,教训记终生 题目给了我们两种操作:1 所有人都吃一个,简记为消除 ...
- hdu 4614 Vases and Flowers
http://acm.hdu.edu.cn/showproblem.php?pid=4614 直接线段树维护 代码: #include<iostream> #include<cstd ...
- cssTex
var head= document.getElementById("head");head.style.cssText="width:200px;height:70px ...
- C++ primer的第二章的主要内容
这第二章主要是介绍了C++中基本的内置数据类型:整型与浮点型.介绍了什么是变量的过程中了解到了左值与右值的概念.左值是可以出现在赋值语句的左边或者右边,也就是说可以放在等号的左右两边,而右值只能是出现 ...
- 【IOS基础知识】NSTimer定时器使用
1.声明 NSTimer *timer; 2.定义 timer = [NSTimerscheduledTimerWithTimeInterval:1.0ftarget:selfsele ...
- (转)SQLLite数据操作
原文:http://dreamboy.blog.51cto.com/3180937/722352 SQLLite数据操作 一般数据采用的固定的静态数据类型,而SQLite采用的是动态数据类型,会根据存 ...
- openstack 中 log模块分析
1 . 所在模块,一般在openstack/common/log.py,其实最主要的还是调用了python中的logging模块: 入口函数在 def setup(product_name, vers ...