Java集合

1.集合大纲

 

集合类存放在java.util包中,使用时需进行导包,主要有三种:set(集),list(列表)和map(映射)。

2.Collection

Collection集合概述

  • 是单例集合的顶层接口,它表示一组对象,这些对象也称为Collection的元素

  • JDK 不提供此接口的任何直接实现,它提供更具体的子接口(如Set和List)实现

常用方法:

  • 方法名说明
    boolean add(E e)添加元素
    boolean remove(Object o)从集合中移除指定的元素
    void clear()清空集合中的元素
    boolean contains(Object o)判断集合中是否存在指定的元素
    boolean isEmpty()判断集合是否为空
    int size()集合的长度,也就是集合中元素的个数

实例:

Collection<Integer> c = new ArrayList();//实现Collection接口
        c.add(520);         //添加元素
        c.add(1314);
        System.out.println(c);
        int size = c.size();    //集合的长度,也就是集合中元素的个数
        System.out.println(size);
        boolean tf = c.contains(520);   //判断集合中是否存在指定的元素
        System.out.println(tf);
        c.remove(1314);         //从集合中移除指定的元素
        System.out.println(c);
        c.clear();          //清空集合中的元素
        System.out.println(c);
        System.out.println(c.isEmpty());    //判断集合是否为空

运行结果:

2.1 List

Collection的子接口

List集合概述

  • 有序集合(也称为序列),用户可以精确控制列表中每个元素的插入位置。用户可以通过整数索引访问元素,并搜索列表中的元素

List集合特点

  • 有索引

  • 可以存储重复元素

  • 元素存取有序

常用方法:

方法名描述
void add(int index,E element)在此集合中的指定位置插入指定的元素
E remove(int index)删除指定索引处的元素,返回被删除的元素
E set(int index,E element)修改指定索引处的元素,返回被修改的元素
E get(int index)返回指定索引处的元素

2.1.1 ArrayList(数组)

List接口的实现类之一

 ArrayList内部是通过数组实现的,它允许对元素进行快速随机访问。

缺点是每个元素之间不能有间隔,当数组大小不满足时需要增加存储能力,就要将已经有数组的数据复制到新的存储空间中。当从 ArrayList 的中间位置插入或者删除元素时,需要对数组进行复制、移动、代价比较高。因此,它适合随机查找和遍历,不适合插入和删除。

常用方法:

public boolean remove(Object o)删除指定的元素,返回删除是否成功
public E remove(int index)删除指定索引处的元素,返回被删除的元素
public E set(int index,E element)修改指定索引处的元素,返回被修改的元素
public E get(int index)返回指定索引处的元素
public int size()返回集合中的元素的个数
public boolean add(E e)将指定的元素追加到此集合的末尾
public void add(int index,E element)在此集合中的指定位置插入指定的元素

实例:

ArrayList<String> array = new ArrayList<String>();

        //添加元素
        array.add("hello");
        array.add("world");
        array.add("java");

        //删除指定的元素,返回删除是否成功
		System.out.println(array.remove("world"));

        //删除指定索引处的元素,返回被删除的元素
        System.out.println(array.remove(1));

        //修改指定索引处的元素,返回被修改的元素
        System.out.println(array.set(1,"javaee"));

        //返回指定索引处的元素
        System.out.println(array.get(0));

        //返回集合中的元素的个数
        System.out.println(array.size());

        //输出集合
        System.out.println("array:" + array);

运行结果:

 

2.1.2 LinkedList(链表)

List接口的实现类之一

LinkedList是用链表结构存储数据的,很适合数据的动态插入和删除,随机访问和遍历速度比较慢。另外,它还提供了List接口中没有定义的方法,专门用于操作表头和表尾元素,可以当作堆栈、队列和双向队列使用。

特有方法:

方法名说明
public void addFirst(E e)在该列表开头插入指定的元素
public void addLast(E e)将指定的元素追加到此列表的末尾
public E getFirst()返回此列表中的第一个元素
public E getLast()返回此列表中的最后一个元素
public E removeFirst()从此列表中删除并返回第一个元素
public E removeLast()从此列表中删除并返回最后一个元素

实例:

LinkedList<Integer> ll = new LinkedList<>();
        ll.add(101);
        ll.addFirst(100);//在该列表开头插入指定的元素
        ll.addLast(102);    //将指定的元素追加到此列表的末尾
        System.out.println(ll);
        int first = ll.getFirst();
        System.out.println(first);//返回此列表中的第一个元素
        int last = ll.getLast();
        System.out.println(last);//返回此列表中的最后一个元素
        ll.removeFirst();   //从此列表中删除并返回第一个元素
        ll.removeLast();    //从此列表中删除并返回最后一个元素
        System.out.println(ll);

运行结果:

 

2.2 Set

Collection的子接口

Set集合的特点

  • 元素存取无序

  • 没有索引、只能通过迭代器或增强for循环遍历

  • 不能存储重复元素

实例:

 Set<String> set = new HashSet<String>();

        //添加元素
        set.add("hello");
        set.add("world");
        set.add("java");
        //不包含重复元素的集合
        set.add("world");

        //遍历
        for(String s : set) {
            System.out.println(s);
        }

运行结果:

 

2.2.1 HashSet

Set的实现类

  • HashSet集合的特点

    • 底层数据结构是哈希表

    • 对集合的迭代顺序不作任何保证,也就是说不保证存储和取出的元素顺序一致

    • 没有带索引的方法,所以不能使用普通for循环遍历

    • 由于是Set集合,所以是不包含重复元素的集合

实例:

HashSet<String> set = new HashSet<String>();

        //添加元素
        set.add("hello");
        set.add("world");
        set.add("java");
        //不包含重复元素的集合
        set.add("world");

        //遍历
        for(String s : set) {
            System.out.println(s);
        }

运行结果:

 

2.2.2 TreeSet

Set的实现类

TreeSet集合概述

  • 元素有序,可以按照一定的规则进行排序,具体排序方式取决于构造方法

    • TreeSet():根据其元素的自然排序进行排序

    • TreeSet(Comparator comparator) :根据指定的比较器进行排序

  • 没有带索引的方法,所以不能使用普通for循环遍历

  • 由于是Set集合,所以不包含重复元素的集合

实例:

//创建集合对象
        TreeSet<Integer> ts = new TreeSet<Integer>();

        //添加元素
        ts.add(10);
        ts.add(40);
        ts.add(30);
        ts.add(50);
        ts.add(20);

        ts.add(30);

        //遍历集合
        for(Integer i : ts) {
            System.out.println(i);
        }

运行结果:

 

3.Map(双列)

  • Map集合概述

  •  

    是单例集合的顶层接口,用于保存具有映射关系的数据,Map里保存着两组数据,key和value,他们都可使用任何引用数据类型,但key值不能重复。所以通过唯一的key可取出对应的value。

  • Map集合的特点

    • 键值对映射关系

    • 一个键对应一个值

    • 键不能重复,值可以重复

    • 元素存取无序

常用方法

方法名说明
V put(K key,V value)添加元素
V remove(Object key)根据键删除键值对元素
void clear()移除所有的键值对元素
boolean containsKey(Object key)判断集合是否包含指定的键
boolean containsValue(Object value)判断集合是否包含指定的值
boolean isEmpty()判断集合是否为空
int size()集合的长度,也就是集合中键值对的个数

实例:

 Map<Integer,Integer> map = new HashMap<>();//创建集合对象
        map.put(1,100);
        map.put(2,200);
        map.put(3,300);
        map.put(4,400);
        map.put(5,500);     //添加元素
        System.out.println(map);
        map.remove(500); //根据键删除键值对元素
        System.out.println(map);
        System.out.println(map.containsKey(1)); //判断集合是否包含指定的键
        System.out.println(map.containsValue(100));//判断集合是否包含指定的值
        System.out.println(map.size());//集合的长度,也就是集合中键值对的个数
        map.clear();    //移除所有的键值对元素
        System.out.println(map);
        System.out.println(map.isEmpty());//判断集合是否为空

运行结果:

 

  • 10
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值