27、Java高级特性——集合、ArrayList集合、LinkedList集合、List接口、ArrayList和LinkedList的区别

目录

课前先导:

一、集合基础

1、数组的缺陷

2、集合的概述

3、集合类的特点

二、ArrayList集合类

1、ArrayList集合类的用法

2、ArrayList类中常用方法

三、ArrayList集合代码演示

1、封装属性类

2、创建集合操作类

3、添加数据:add()

4、获取集合元素个数:size()

 5、获取集合中指定下标的元素:get()

6、 判断集合中是否包含某个元素:contains()

7、 删除集合中的元素:remove(元素)/remove(元素下标)

8、判断集合是否为空:isEmpty()

9、将集合转换为数组:toArray() 

10、清空集合:clear()

四、遍历集合的三种方法

1、普通for循环

2、增强for循环

3、迭代器iterator类:iterator()

五、LinkedList集合 

1、LinkedList集合的特点

2、LinkedList集合中的方法

六、LinkedList集合代码演示

1、封装属性类

2、创建集合操作类

3、创建集合容器

4、添加数据

5、在集合首部添加元素:addFirst()

6、在集合末尾添加元素:addLast()

7、 返回列表中的第一个元素和最后一个元素:getFirst()/getLast()

8、删除并返回集合中的第一个元素和最后一个元素:removeFirst()/removeLast()

七、List接口

八、ArraysList和LinkedList的区别

九、代码总结

1、封装属性类

2、ArrayList集合

3、LinkedList集合 


课前先导:

我们前面所讲的变量、数组都是用来存储数据的容器,我们先来看一下存储数据的容器有哪些。

--->变量:存储数据的空间(装数据的容器),一个变量中只能存储一个数据;

--->数组:存储数据的空间(装数据的容器),一个数组中可以存储多个相同类型的数据;

--->对象:可以理解为存储数据的空间(装数据的容器),一个对象可以拥有不同类型的属性,从而达到存储不同类型数据的目的;

--->集合:存储数据的空间(装数据的容器),一个集合中可以存储多个不同类型的数据。

其实集合本质上存储的还是相同类型的数据,因为集合还有一个能力,它会将存储在集合里面的所有元素向上转型,全部转成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,"一次六千李云迪
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值