天天看点

java学习笔记(11)collection集合及其实现类一、collection集合二、List接口三、Set接口

文章目录

  • 一、collection集合
    • 1.Collection集合、List接口和Set接口的关系图
    • 2.创建Collection集合的格式:
    • 3.Collection常用的方法(三者通用的常用方法)
  • 二、List接口
    • 1.List接口的三大特点
    • 2.List接口特有方法(需要索引的方法)
    • 3.ArrayList集合
    • 4.LinkedList集合
    • 5.Vector集合
  • 三、Set接口
    • 1.Set接口的三大特点
    • 2.HashSet集合
      • LinkedHashSet集合

一、collection集合

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

java学习笔记(11)collection集合及其实现类一、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集合的<>所填)
byte Byte
short Short
int Integer
long Long
float Float
double Double
char Character
boolean Boolean
  • 创建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则不同元素,添加到集合。)
    java学习笔记(11)collection集合及其实现类一、collection集合二、List接口三、Set接口

2.2 HashSet集合的创建

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

LinkedHashSet集合

LinkedHashSet集合的特点

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

LinkedHashSet集合的创建

Set<> set = new LinkedHashSet<>();
           

继续阅读