集合(list、set、map)

总述

通俗的说,集合就是一个放数据的容器,准确的说是放数据对象引用的容器,为什么存放引用,我觉得是因为,引用就是别名,是一个快捷方式,它不是实体,只是一个通向实体的指针,如果存放实体的话,其他方法或类就用不了这个实体了,通过使用引用就可以,实体不动,无限次引用。
常用的集合类型主要有3种:list(列表)、set(集)和map(映射)。

List

List是一个有序单值序列,List的特点是有序,可重复。序号从0开始。

List接口有三种实现方式:
 ○第一种:ArrayList,底层由数组实现,线程安全,特点:查询速度快,增删慢。
 ○第二种:LinkedList,底层由链表实现,线程不安全,操作效率高,特点:查询速度慢,增删快。
 ○第三种:Vector(了解即可)实现与ArrayList是一样的,但是Vector是线程安全的,操作效率低。

ArrayList方法(Staff类已经建好):

package saved;

import java.util.ArrayList;
import java.util.List;

public class ListTest {
    public static void main(String[] args) {
        Staff person1=new Staff();
        person1.name="jensen";
        Staff person2=new Staff();
        person2.name="Ryan";
        List<Staff> StaffList=new ArrayList<>();
        StaffList.add(person1);
        StaffList.add(person2);
    }
}

LinkedList方法:

List<Staff> StaffList=new LinkedList<>();

Vector方法:

List<Staff> StaffList=new Vector<>();
List常用方法:
添加:
方法作用
boolean add(E e):在链表后添加一个元素,如果成功,返回true,否则返回false;
addFirst(E e):在链表头部插入一个元素;(LinkedList方法才有)
addLast(E e)在链表尾部添加一个元素;(LinkedList方法才有)
add(int index, E element):在指定位置插入一个元素。
push(E e):与addFirst一样,实际上它就是addFirst;
删除:
方法作用
boolean remove(object o):移除链表中指定元素;
remove(int index):移除链表中指定位置元素;
removeFirst():移除链表中第一个元素,与remove类似;(LinkedList方法才有)
removeLast():移除链表中最后一个元素;(LinkedList方法才有)
boolean removeFirstOccurrence(Object o):移除链表中第一次出现所在位置的元素;(LinkedList方法才有)
boolean removeLastOccurrence(Object o):移除链表中最后一次出现所在位置的元素;(LinkedList方法才有)
获取元素:
方法作用
get(int index):按照标号获取元素,但是不只是查询,不会把原数据删除
getFirst():获取第一个元素;
getLast():获取最后一个元素;
peek()获取第一个元素,但是不移除;相当于.get(0)
peekFirst():获取第一个元素,但是不移除;
peekLast():获取最后一个元素,但是不移除;
pop():与removeFirst一样,实际上它就是removeFirst;
poll():与removeFirst一样,实际上它就是removeFirst;

poll和pop的区别:基本相同,当头结点为空的时候,两个函数的处理方式不同:poll()选择返回null,pop()选择抛出异常。

set

是一个无序单值集合,特点:无序,不可重复。
上面提到Set是无序,所以HashSet里面没有重复的数据,可以允许为null值,它是Set接口的一个实现类

set接口的实现方式:
	○ HashSet  底层是使用了哈希表来支持的,特点: 存取速度快.
	○ TreeSet   如果元素具备自然顺序的特性,那么就按照元素自然顺序的特性进行排序存储。

HashSet 方法

import java.util.*;

public class ListTest {
    public static void main(String[] args) {
        Staff person1=new Staff();
        person1.name="jensen";
        Staff person2=new Staff();
        person2.name="Ryan";
        Set<Staff> staffSet=new HashSet<>();
    }
}

TreeSet 方法

Set<Staff> staffSet=new TreeSet<>();
常用方法
方法作用
add(E e)如果此 set 中尚未包含指定元素,则添加指定元素。
clear()从此 set 中移除所有元素。
clone()返回此 HashSet 实例的浅表副本:并没有复制这些元素本身。
contains(Object o)如果此 set 包含指定元素,则返回 true。
remove(Object o)如果指定元素存在于此 set 中,则将其移除。

查询方法:可以先将set转换成list,然后在取:
在这里插入图片描述

Map

Map映射集合的根接口,存放的是键值对

实现方法
	○ HashMap 通过使用映射关系来到达存储数据,通过hashcode快速查找,具体特点:无序,速度快
	○ TreeMap 映像树,基于红黑树实现,没有调优选项,处于平衡状态,具体特点:有序,速度慢

常用方法
添加:put方法
在这里插入图片描述
查询:get方法
在这里插入图片描述
删除:remove方法
在这里插入图片描述
修改某个key的value
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值