为什么要有集合
数组长度固定,如果需要动态变长的存数据,就不太可行
因此引入了集合,集合自动扩容,随着数据的插入可以动态增加长度
集合存储数据类型的特点
只可以存储引用数据类型,不可以直接存储基本数据类型
如果硬要存基本数据类型的数据,那可以将基本数据类型的数据变成一个包装类,就可以实现
集合和数组的对比
- 数组
数组长度固定、可以存储基本数据类型和引用数据类型 - 集合
集合长度可变、只能存储引用数据类型
ArrayList基本操作
新建一个ArrayList对象
这里引入了一个概念:泛型,就是执行集合中存储的数据类型
初始被创建的时候,集合的长度是0,即list.size() = 0
package com.arraylist;
import java.util.ArrayList;
public class ArrayListDemo1 {
public static void main(String[] args) {
//1. 创建集合的对象
// 泛型:限定集合内存储的数据类型
ArrayList<String> al = new ArrayList<String>(); // JDK以前的写法
ArrayList<String> list = new ArrayList<>(); //JDK7以后得写法
sout(list); //返回:[],代表一个空集合
}
}
ArrayList
是java已经写好的一个类。在底层做了一些处理
在打印的时候,不是返回地址值,而是集合中存储的数据内容
ArrayList成员方法
- 增:
boolean add(E e)
添加元素,返回值表示是否添加成功------总是返回true
- 删:
a.boolean remove(E e)
删除指定元素,返回值表示是否删除成功
b.E remove(int index)
删除指定索引的元素,返回被删除的元素 - 改:
set(int index, E e)
修改指定索引下的元素,返回原来的元素 - 查:
a.get(int index)
获取指定索引的元素
b.size()
集合的长度,也就是集合中元素的个数
ArrayList使用示例
package com.arraylist;
import java.util.ArrayList;
public class ArrayListDemo2 {
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<>();
// 增
list.add("I");
list.add("have");
list.add("a");
list.add("pencil");
//查
System.out.println(list.get(1));
System.out.println("list的长度为: " + list.size());
// 改
list.set(3, "apple");
System.out.println(list);
// 删
list.remove(2);
System.out.println(list);
}
}
基本数据类型对应的包装类
基本数据类型 | 包装类 |
---|---|
byte | Byte |
short | Short |
char | Character |
int | Integer |
long | Long |
double | Double |
float | Float |
boolean | Boolean |
例:创建一个整数集合,并遍历
package com.Test;
import java.util.ArrayList;
public class Test2 {
public static void main(String[] args) {
ArrayList<Integer> list = new ArrayList<>();
// 添加元素,照常添加数字即可
// JDK5之后,int和Integet之间是可以互相转化的
list.add(1);
list.add(2);
list.add(3);
// 遍历
System.out.print("[ ");
for (int i = 0; i < list.size(); i++) {
if (i == list.size() - 1){
System.out.printf("%s ]", list.get(i));
}else{
System.out.printf("%s, ", list.get(i));
}
}
}
}