目录
7、 删除集合中的元素:remove(元素)/remove(元素下标)
7、 返回列表中的第一个元素和最后一个元素:getFirst()/getLast()
8、删除并返回集合中的第一个元素和最后一个元素:removeFirst()/removeLast()
课前先导:
我们前面所讲的变量、数组都是用来存储数据的容器,我们先来看一下存储数据的容器有哪些。
--->变量:存储数据的空间(装数据的容器),一个变量中只能存储一个数据;
--->数组:存储数据的空间(装数据的容器),一个数组中可以存储多个相同类型的数据;
--->对象:可以理解为存储数据的空间(装数据的容器),一个对象可以拥有不同类型的属性,从而达到存储不同类型数据的目的;
--->集合:存储数据的空间(装数据的容器),一个集合中可以存储多个不同类型的数据。
其实集合本质上存储的还是相同类型的数据,因为集合还有一个能力,它会将存储在集合里面的所有元素向上转型,全部转成Object类型。
集合的长度和数组的长度不一样,数组的长度一旦生成就不能更改,而集合的长度是根据元素的额个数来确定。
--->IO流:将数据通过IO流存储到计算机的某个文件中;
--->XML:从计算机的XML文件中读取数据或者存储数据到XML文件中;
--->数据库:专门用来存储和管理数据的软件。
一、集合基础
1、数组的缺陷
(1)数组长度固定,无法使用元素数量的变化;
(2)可获取数组长度,但无法获取实际存储的元素个数;
(3)数组采用在内存中分配连续空间的存储方式,根据元素信息查找时效率比较低,需要多次比较。
2、集合的概述
编程的时候如果要存储多个数据,使用长度固定的数组存储方式,不一定满足我们的需求,更适应不了变化的需求,那么我们就应该使用集合。
3、集合类的特点
提供一种存储空间可变的存储模型,存储的数据容量可以发生改变。
二、ArrayList集合类
ArrayList类是java.util包中的类。
ArraysList采用动态数组的数据结构存储数据,实现了长度可变的数组,在内存中分配连续的空间,遍历元素和随机访问元素的效率比较高。
ArrayList在删除和插入非尾部元素时,会导致操作位置后面的所有元素移动。
1、ArrayList集合类的用法
ArrayList<E>:
--->可调整大小的数组实现;
---><E>:是一种特殊的数据类型:泛型(这里的类型是我们集合中存储的数据类型).
在出现E的地方我们使用引用类型替换即可:
--->存储字符串类:ArrayList<String>
--->存储Student类对象类型:ArrayList<Student>
2、ArrayList类中常用方法
三、ArrayList集合代码演示
1、封装属性类
封装一个新闻类:NewsTitle
public class NewTitle {
private int id; //新闻标题的编号
private String name;//新闻的名称;
private String author;//作者
//无参构造
public NewTitle(){
}
//有参构造
public NewTitle(int id, String name, String author) {
super();
this.id = id;
this.name = name;
this.author = author;
}
//get/set方法
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAuthor() {
return author;
}
public void setAuthor(String author) {
this.author = author;
}
//toString方法
@Override
public String toString() {
return "NewTitle [id=" + id + ", name=" + name + ", author=" + author
+ "]";
}
}
2、创建集合操作类
创建ArraysListDemo01类,创建NewsTitle对象和集合容器
import java.util.ArrayList;
public class ArraysListDemo01 {
public static void main(String[] args) {
//创建两个NewsTitle类对象
NewsTitle nt01 = new NewsTitle(1001,"我的很大吴亦凡!","张三");
NewsTitle nt02 = new NewsTitle(1002,"一次六千李云迪!","李四");
//使用ArrayList类创建一个集合容器
ArrayList al = new ArrayList();
}
}
3、添加数据:add()
(1)使用add()方法将数据存入到集合中
//使用ArrayList类中的add()方法,将数据存入到集合中
al.add(nt01);
al.add(nt02);
al.add(nt01);//ArraysList是一个有序的不唯一的集合(里面的元素可以重复)
System.out.println(al);
(2) 使用add(int index,Object object)方法将数据存入指定位置
//使用ArrayList类中的add()方法,将数据存入到集合中
al.add(nt01);
al.add(nt02);
al.add(nt01);//ArraysList是一个有序的不唯一的集合(里面的元素可以重复)
System.out.println(al);
//将集合存储到集合中的指定位置add(int index,Object object)
NewsTitle nt03 = new NewsTitle(1003,"死不承认李易峰!","王二");
al.add(1, nt03);
al.add(nt03);
System.out.println(al);
4、获取集合元素个数:size()
//通过集合对象名al调用方法,对集合元素进行操作
//获取元素个数
int size = al.size();
System.out.println("集合al的元素个数为:"+size+"个。");
5、获取集合中指定下标的元素:get()
没有使用泛型的时候,集合中的所有元素都会向上转型为Object类。
//获取集合中指定下标的元素
//获取下标为0的集合元素
Object object01 = al.get(0);
System.out.println(object01);//当你直接输出对象名的时候输出的是地址值,重写了toString方法,输出的是toString方法的内容
//类型转换
NewsTitle nt = (NewsTitle)object01;
System.out.println(nt);
6、 判断集合中是否包含某个元素:contains()
//判断集合中是否包含某个元素
boolean result = al.contains(nt02);
System.out.println("集合中是否包含nt02这个元素?"+result);
7、 删除集合中的元素:remove(元素)/remove(元素下标)
(1)remove(元素)
返回值是boolean类型,返回true删除成功,返回flase则删除失败
boolean result01 = al.remove(nt02);
System.out.println("元素nt02是否删除成功:"+result01);
(2)remove(下标)
返回值是Object类型,返回值是删除的元素。
public class ArraysListDemo01 {
public static void main(String[] args) {
//创建两个NewsTitle类对象
NewsTitle nt01 = new NewsTitle(1001,"我的很大吴亦凡!","张三");
NewsTitle nt02 = new NewsTitle(1002,"一次六千李云迪