java学习笔记(11)collection集合及其实现类

一、collection集合

1.Collection集合、List接口和Set接口的关系图

在这里插入图片描述

2.创建Collection集合的格式:

方式一:Collection<元素类型>  变量名 = new Arraylist<元素类型>();         //只能存储<>指定的元素类型
方式二:Collection 变量名 = new Arraylist();								//集合的元素类型默认为Object

3.Collection常用的方法(三者通用的常用方法)

  • (1)向集合中添加元素(集合的末尾)
boolean add(E e)
  • (2)清空集合中的所有元素(但是集合还是存在的)
void clear()
  • (3)查询集合中是否有某个元素(区分大小写,区分元素类型)
boolean contains(Object obj)
  • (4)返回集合中的元素个数
int size()
  • (5)从集合中移除某个元素,如果存在的话,返回是否移除成功(当集合中有相同的元素时,默认只移除第一个)(区分大小写)
boolean remove(Object obj)
  • (6)返回包含此集合中所有元素的数组(由于不确定集合中的元素类型,所以数组的类型为Object)
Object[] toArray()

二、List接口

1.List接口的三大特点

  • 有序集合(存储的顺序是一样的,怎么存进去,怎么拿出来)
  • 具有索引(查找速度快)
  • 可以存储重复的元素(而Set接口不能存储重复元素)

注: ArrayList与LinkedList都实现List接口,它们都不是同步的,所以都是线程不安全的。

2.List接口特有方法(需要索引的方法)

  • (1)将元素插入到列表的指定索引上(其后面元素位置向后顺延一位)
add(int index,E)

注: 带有索引的操作,一定要防止索引越界问题

  • (2)返回集合中指定位置(索引)处的元素
Object get(int index)
  • (3)移除指定索引上的元素(E是返回被删除的元素)
E remove(int index)
  • (4)修改指定索引上的元素(返回被修改之前的元素)
E set(int index,E)

3.ArrayList集合

3.1 ArrayList集合的描述

  • ArrayList底层是由数组做的(本质是一个可变数组)(数组的特点:查询快,增删慢)

  • 数组与集合的区别:数组在声明时就需要输入数组的长度,而集合的长度是可以变化的。并且ArrayList集合只能存储引用数据类型,不能存储基本数据类型。数组既可以存储基本数据类型,也可以存储引用数据类型。

基本数据类型对应的引用数据类型(ArrayList集合的<>所填)
byteByte
shortShort
intInteger
longLong
floatFloat
doubleDouble
charCharacter
booleanBoolean
  • 创建ArrayList集合(对象):与其他普通的引用数据类型创建方式完全相同,但是要指定容器中存储的数据类型。
ArrayList<要存储元素的数据类型> 变量名 = new ArrayList<要存储元素的数据类型>();

3.2 ArrayList集合的常用方法

  • (1)返回集合中指定位置(索引)处的元素
Object get(int index)
  • (2)返回集合中的元素个数
int size()
  • (3)将指定元素obj插入到集合中的指定位置(其后面的元素会以此后移一位)
boolean add(int index,  Object obj)
  • (4)从集合中删除指定index处的元素,并返回该元素
Object remve(int index)
  • (5)清空集合中的所有元素
void clear()
  • (6)用指定元素obj替代集合中指定位置上的元素
Object set(int index, Object obj)
  • (7)集合元素的遍历
 for (int i = 0; i < list.size(); i++) {
			System.out.println(list.get(i));

往里放基本数据类型也没有关系,因为Java有拆箱和装箱机制。

4.LinkedList集合

4.1 LinkedList集合的描述

  • 它的底层数据结构是链表,所以它查询慢,增删快。

4.2 集合中的常用方法

  • (1)添加元素到链表的开头/结尾
void addFirst(E)
void  addLast(E)
  • (2)获取链表的开头/结尾的元素(如果链表为空获取元素会报异常)
E getFirst()
E getLast()
  • (3)移除并返回链表的开头/结尾的元素
E removeFirst()
E removeLast()

5.Vector集合

  • 它的底层数据结构是数组

  • 它的本质和ArrayList一样(用法一样),但是它的特点是同步的,所以是线程安全的,运行速度慢

  • 已经被更先进的ArrayList取代,以后也不会用

三、Set接口

1.Set接口的三大特点

  • 不允许存储重复的元素,如果写了重复元素,那么只存储一个。
  • Set集合取出元素的方式有:迭代器和增强for,没有普通for,因为它是无序集合,没有索引
  • 注意LinkedHashSet是有序的

2.HashSet集合

2.1 HashSet集合的特点

  • 由哈希表(实际上是一个HashMap实例,它的底层数据结构是哈希表(一种链表数组结合体))支持。

  • 代码的编写上和ArrayList完全一致。

  • 存储和取出都比较快,线程不安全,运行速度较快。

  • 用add或者contains等方法来判断元素是否重复。(HashSet集合由于是无序的,其判断唯一的依据是元素类型的hashCode与equals方法的返回结果,先判断新元素与集合内已经有的旧元素的HashCode值。如果不同,说明是不同元素,添加到集合。如果相同,再判断equals比较结果。返回true则相同元素;返回false则不同元素,添加到集合。)
    在这里插入图片描述

2.2 HashSet集合的创建

HashSet<> hs = new HashSet<>();

LinkedHashSet集合

LinkedHashSet集合的特点

  • 继承自HashSet
  • 它的特点,有序,存储和取出的顺序相同,但是它的父类HashSet是无序的,线程不安全的集合,不能存储重复元素。

LinkedHashSet集合的创建

Set<> set = new LinkedHashSet<>();
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值