集合框架与泛型(一)——List和Set

Java集合

Java集合框架提供了一套性能优良、使用方便的接口和类,它们位于java.util包中
Java集合框架图如下所示:

在这里插入图片描述

Java的集合类主要由Map接口和Collection接口派生而来
Collection接口有两个子接口:List接口和Set接口
Java集合框架由三大接口构成:Map接口、List接口和Set接口

Collection接口存储一组不唯一、无序的对象

在这里插入图片描述

List接口

List接口:存储一组不唯一、有序(插入顺序)的对象
List接口的实现类有:ArrayList和LinkedList

在这里插入图片描述

ArrayList类

ArrayList实现了长度可变的数组,在内存中分配连续的空间,遍历元素和随机	访问元素的效率比较高
ArrayList也称为动态数组
ArrayList与数组的区别:
1、ArrayList集合中可以添加任何类型的数据,并且添加的数据都将转换成Object类型
2、数组中只能添加同一数据类型的数据

ArrayList常用方法:

在这里插入图片描述

注:
	1、调用ArrayList类的add(Object obj)方法时,添加到集合当中的数据将被转换为Object类型。
	2、使用ArrayList类之前,需要导入相应的接口和类,代码如下:    
   		import java.util.ArrayList;
    	import java.util.List;

LinkedList类

LinkedList类是List接口的链接列表实现类,允许元素值是任何数据,包括null。
LinkedList常用方法:

在这里插入图片描述

注:
	list.remove();//等同于removeFirst()
	list.element();//等同于getFirst()
	list.offer(1);//等同于add(1)
	list.peek();//等同于getFirst(),如果当前为空,返回空
	list.poll();//弹出首元素,相对于removeFirst()
	list.pop();//相对于removeFirst()
	list.push("abc");//等同于addFirst("abc")
	
	Collection接口常用通用方法还有:clear()清空数据、isEmpty()判断集合是否为空、iterator()迭代器、toArray()

ArrayList和LinkedList有何异同?
	相同点:
		都是List接口的一个具体实现类
	不同点:
		1、ArrayList类底层是可变数组,遍历元素更快,改变值也更快
		2、LinkedList类底层是双向链表,插入、删除更快

Set接口

Set接口:存储一组唯一、无序的对象,Set中存放对象的引用,Set接口不存在get()方法
HashSet是Set接口常用的实现类
HashSet集合的特点:
	1、集合内的元素是无序排列的
	2、HashSet类是非线程安全的
	3、允许集合元素值为null
	
HashSet类的常用方法:

在这里插入图片描述

注:使用HashSet类之前,需要导入相应的接口和类,代码如下:
    import java.util.Set;
    import java.util.HashSet;

Iterator接口

Iterator接口:对集合进行迭代的迭代器
Iterator接口主要有两个方法:
	hasNext():判断是否存在下一个可访问的元素,如果仍有元素可以迭代,则返回true。
	next():返回要访问的下一个元素。
	
如何遍历Set集合呢?
	方法一:通过迭代器Iterator实现遍历 
    	1、获取Iterator :Collection 接口的iterator()方法                
    	2、Iterator的方法 
        	boolean hasNext(): 判断是否存在另一个可访问的元素             
        	Object next(): 返回要访问的下一个元素 
	方法二:增强型for循环
  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值