目录
1.集合基础
(学完集合基础要知道集合的常见操作有哪些,并且能够使用这些常见操作完成需求)
1.1集合概述
有一个人考了一百分,用一个变量存储就可以了。
如果有很多个人考试,有很多个分数,我要存储这些分数怎么办呢?
这里就想到了前面学习过的数组,但是问题又来:
假如考试当天有人生病了没来,那这个数组应该怎么变化,而我们知道数组的长度是固定的,是不能发生改变的。这时候就发现数组满足不了我们的需求了。
所以编程的时候如果要存储多个数据,使用长度固定的数组存储格式,不一定满足我们的需求,更适应不了变化的需求,那么此时该如何选择呢?
很明显这个选择就是我们要学的集合。
集合类的特点:提供一种存储空间可变的存储模型,存储的数据容量可以发生改变。
集合类有很多,目前我们先学习一个:ArrayList
去API中查询一下ArrayList他是再util包下,所以使用ArrayList是要导包的
Class ArrayList<E>:
可调节大小的数组实现。
<E>:是一种特殊的数据类型,泛型。
怎么用呢?
在出现E的地方我们使用引用数据类型替代即可
举例:ArrayList<String>,ArrayList<Student>。
比如说将要用这个集合存储字符串类型,<E>中的E就用String替代即可;比如说想在ArrayList<E>中存储学生类型,只需要把E换成Student替代即可。
1.2ArrayList构造方法和添加方法
代码演示:
import java.util.ArrayList;
/*
ArrayList构造方法:
public ArrayList():创建一个空的集合对象
ArrayList添加方法
public boolean add(E e):将指定的元素追加到刺激和的末尾
public void add(int index,E element):在此集合中的指定位置插入指定的元素
*/
public class ArrayListDemo {
public static void main(String[] args) {
//public ArrayList():创建一个空的集合对象,在右边的<>中jdk7以前要先上相应的数据类型
//ArrayList<String> array = new ArrayList<>();
ArrayList<String> array = new ArrayList<String>();//这种和上面那种方式都行
//2.元素赋值
array.add("hello");
array.add("world");
array.add("java");
//4.public void add(int index,E element):在此集合中的指定位置插入指定的元素
array.add(1,"javase");
//array.add(3,"javaee")注释掉上面一个代码,修改插入的位置和元素,输出没有问题
//6.重新插入元素
//array.add(4,"javaee");//7.我们现在只要三个元素,也就是索引012,我们现在跳到4了会发生什么
//9.我们把第一个放开,根据指定索引添加元素,这样写就ok了
//输出集合
System.out.println("array:" + array);//1. array:[] 左右中括号里面是没有内容的,我们要来添加元素
//3.再次输出得到array:[hello, world, java]会发现每个元素是用逗号隔开的
//5.再次输出得到array:[hello, javase, world, java],会看到javase被插入到所以1的位置,其他元素往后面挪了一个
//8.会报错IndexOutOfBoundsException,这就是集合的索引越界
}
}
1.3ArrayList集合常用办法
Object-元素;index-索引;element-元素;
了解了这五个方法之后,代码演示:
import java.util.ArrayList;
/*
ArrayList常用方法:
public boolean remove(Object o):删除指定的元素,返回删除是否成功
public E remove(int index):删除指定索引出的元素,返回被删除的元素
public E set(int index,E element):修改指定索引处的元素,返回被修改的元素
public E get(int index):返回指定索引处的元素
public int size():返回i集合中的元素个数
*/
public class ArrayListDemo2 {
public static void main(String[] args) {
//创建集合
ArrayList<String> array = new ArrayList<String>();
//添加元素
array.add("hello");
array.add("world");
array.add("java");
//1.public boolean remove(Object o):删除指定的元素,返回删除是否成功
//System.out.println(array.remove("world"));// true
//System.out.println("array:"+array);//array里面的world没有了
//1.1尝试删除没有的元素(测试功能,每测试一个功能的时候要把前面测试的注释掉,才会使结果更准确)
//System.out.println(array.remove("javaee"));//直接修改失败返回false,不执行本条语句
//System.out.println("array:"+array);//所以还是得到array:[hello, world, java]
//2.public E remove(int index):删除指定索引出的元素,返回被删除的元素
//System.out.println(array.remove(1));//返回被删除的元素 world
//经过输出得到array:[hello, java]
//2.1删除不存在的3所以
//System.out.println(array.remove(3));
//直接报错IndexOutOfBoundsException索引越界
//3.public E set(int index,E element):修改指定索引处的元素,返回被修改的元素
//System.out.println(array.set(2,"javase"));//返回被修改的元素 java
//得到array:[hello, world, javase]
//3.1如果改为要修改不存在索引3处的元素,还是会报错 索引越界
//System.out.println(array.set(3,"javase"));//索引越界
//4.public E get(int index):返回指定索引处的元素
//System.out.println(array.get(0));//得到 hello,集合里面的元素并不会发生改变
//4.1同样的我们来一个
//System.out.println(array.get(0));//hello
//System.out.println(array.get(1));//world
//System.out.println(array.get(2));//java
//System.out.println(array.get(3));//输出上诉三个输出语句,到这报错索引越界
//5.public int size():返回i集合中的元素个数
System.out.println(array.size());//输出了3
//输出集合
System.out.println("array:" + array);
}
}