集合

1、集合的概念

(1)集合的定义

集合类是可以往里面保存多个对象的类,存放的是对象。
Java的集合类是java.util包中的重要内容,它允许以各种方式将元素分组,并定义了各种使这些元素更容易操作的方法。

(2)和数组的区别

数组的长度是固定不变的,而集合的长度是可变的。
数组的元素可以是任何类型,集合的元素只能是引用数据类型。

(3)集合框架

在这里插入图片描述

2、集合的分类

java的集合分为两大类:Collection和Map。

(1)Collection集合

每个元素都是一个单一值
Collection又分为List和Set。
List是有序集合,可以存储重复元素;
Set是无序集合,不可以存储重复元素。

(2)Map集合

每个元素是一个键值对

3、Collection集合

(1)java.util.Collection接口

它是一个接口,不能实例化。

(2)抽象方法

int	 size() 
返回此集合中的元素数。 
boolean 	isEmpty() 
如果此集合不包含元素,则返回 trueboolean 	add(E e) 
确保此集合包含指定的元素(可选操作)。
boolean 	contains(Object o) 
如果此集合包含指定的元素,则返回 truevoid		clear() 
从此集合中删除所有元素(可选操作)。
boolean		remove(Object o) 
从该集合中删除指定元素的单个实例(如果存在)(可选操作)。
Object[]	toArray() 
返回一个包含此集合中所有元素的数组。 
Iterator<E>	  iterator() 
返回此集合中的元素的迭代器。 

4、List集合

(1)java.util.List接口

它是一个接口,不能实例化。
List继承了Collection!!
List是有序的集合,可以存储重复的元素。

(2)抽象方法

继承的方法:

int 		size() 
返回此集合中的元素数。 
boolean		 isEmpty() 
如果此集合不包含元素,则返回 trueboolean		 add(E e) 
确保此集合包含指定的元素(可选操作)。
boolean		 contains(Object o) 
如果此集合包含指定的元素,则返回 truevoid		 clear() 
从此集合中删除所有元素(可选操作)。
boolean 		remove(Object o) 
从该集合中删除指定元素的单个实例(如果存在)(可选操作)。
Object[] 		toArray() 
返回一个包含此集合中所有元素的数组。 
Iterator<E>		iterator() 
返回此集合中的元素的迭代器。

(3)实现类ArrayList

构造器:
ArrayList() 
构造一个初始容量为十的空列表。
集合元素遍历:
第一种方法
for(var  i=0;i<list.size();i++){
元素=list.get(i);
}
第二种方法
Iterator   it=list.iterator();
while(it.hasNext()){
元素=it.next();
}

第三种方法
for(Object   o : list){
//元素o
}

第四种方法(JDK8之后才有)
list.forEach(o ->  元素o );

(4)实现类区别

ArrayList、Vector、LinkedList之间:

  1. Vector是按照数组结构存储数据的,是线程安全的,效率低。
  2. ArrayList是按照数组结构存储数据的,是非线程安全的,效率高。
  3. ArrayList是按照数组结构存储数据的,是非线程安全的,增删效率低,查询效率高。
  4. LinkedList是按照链表结构存储数据的,是非线程安全的,增删效率高,查询效率低。

5、Set集合

(1)java.util.Set接口

它是一个接口,不能实例化。
Set继承了Collection!!
Set是无序的集合,不可以存储重复的元素。

(2)抽象方法

继承的方法:
int		size() 
返回此集合中的元素数。 
boolean		isEmpty() 
如果此集合不包含元素,则返回 trueboolean		add(E e) 
确保此集合包含指定的元素(可选操作)。
boolean		contains(Object o) 
如果此集合包含指定的元素,则返回 truevoid		clear() 
从此集合中删除所有元素(可选操作)。
boolean		remove(Object o) 
从该集合中删除指定元素的单个实例(如果存在)(可选操作)。
Object[]	toArray() 
返回一个包含此集合中所有元素的数组。 
Iterator<E>		iterator() 
返回此集合中的元素的迭代器。 
扩展的方法:(只对继承add方法进行了限制,不允许添加重复元素)
boolean		add(E e) 
如果指定的元素不存在,则将其指定的元素添加(可选操作)。 

(3)实现类HashSet

构造器:
HashSet() 
构造一个新的空集合; 背景HashMap实例具有默认初始容量(16)和负载因子(0.75)。
集合元素的遍历:
第一种方法
Iterator   it=set.iterator();
while(it.hasNext()){
元素=it.next();
}

第二种方法
for(Object   o : set){
//元素o
}

第三种方法JDK8
set.forEach(o ->  元素o );

(4)实现类的区别

HashSet、LinkedHashSet、TreeSet之间:

  1. HashSet底层数据结构是哈希表。(无序,唯一);
  2. LinkedHashSet底层数据结构是链表和哈希表。(FIFO插入有序,唯一);
  3. TreeSet底层数据结构是红黑树。(唯一,有序)
  4. HashSet插入数据最快,其次LinkHashSet,最慢的是TreeSet因为内部实现排序;
  5. HashSet不保证有序,LinkHashSet保证FIFO即按插入顺序排序,TreeSet安装内部实现排序,也可以自定义排序规则;
  6. HashSet和LinkHashSet允许存在null数据,但是TreeSet中插入null数据时会报NullPointerException;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值