JAVA 集合

原文链接,讲的巨好

Java集合

集合概述

Collection

一个一个存

  • List

    有序集合,能够存重复的数据

  • Set

    无序集合,不允许放重复的数据

主要继承结构图:

在这里插入图片描述

  1. Iterable接口:可迭代的

    里面有iterator()方法,返回一个Iterator迭代器

  2. Iterator接口:迭代器

    里面有hasNext()next()remove()等方法。

    hasNext():判断集合中是否有下一个元素,有的话就返回true,否则返回false

    next():返回集合中的下一个元素

    remove():删除集合中最后一个元素

  3. Collection接口继承自Iterable接口:集合

    所有的集合都要实现Iterable接口需要实现它里面的iterator()方法然后得到迭代器,所以所有的集合都是可迭代的。

  4. ListSet接口也都继承自Collection接口

    LIst:有序可以重复

    Set:无序不可重复

  5. ArrayList实现了List接口

    ArrayList顾名思义底层采用的是数组来存储元素的,所以ArrayList集合适合查询,不适合频繁增删元素。因为数组存的都是一组相同数据类型的集合,在内存里是连续存储的,只是通过数组名的地址来指引,数组中的元素是连续内存地址排列的,如果按下标增加或者删除的话数组的地址就会发生偏移,但是查询就不会,查询因为内存地址连续,所以查询的效率就会提高。

  6. LinkedList实现了List接口

    底层采用双向链表存储数据。适合增删元素,不适合查询。

  7. Vector实现了List接口

    底层和ArrayList集合相同,但是Vector在多线程是安全的,效率较低,现在很少使用。

  8. HashSet实现了Set接口

    底层是哈希表(又叫散列表)

  9. SortedSet继承了set接口

    存进去的数据是无序且不可重复的,但是存储进去之后会自动按照元素大小排序

  10. TreeSet实现了SortedSet接口

思路:
  1. Collection接口继承Iterable(可迭代的)接口,实现里面的iterator()方法,这个方法的返回Itertor接口,利用返回的Iterator接口里的hasnext()判断是否有下一个元素,next()返回下一个元素,remove()删除其中的元素。
  2. 其中ListSet都继承Collection接口,都能够实现上述方法。
  3. ArrayListLinkedListVector实现了List接口
  4. HashSet实现了Set接口,SortedSet继承了Set接口,而TreeSet实现了SortedSet接口

Map

一对一对存

  • Map

    无序集合,集合中是用键值对(Key—Value)来存储的,键是无序不可重复的,在Map里起决定性作用的是键key,值只是key存的值而已。

主要继承结构图:

在这里插入图片描述

  1. Map是顶层接口

    Map里的数据都是key—value键值对来存储的

  2. HashMap实现了Map接口

    HashMap里的key等同于set集合,无序且不能重复

  3. Hashtable实现了Map接口

    线程是安全的,但是效率很低

  4. Properties继承了Hashtable接口

    属性类,也是以key—value的方式存的,只是键和值都是字符串

  5. SortedMap继承了Map接口

    存入的key是无序且不可重复的,但是存储的key可以自动排序,key等同于SortedSet

  6. TreeMap实现了SortedMap

    里面的key就是一个TreeSet

集合实现类总结:

  • List

    有序且可重复

    有序:存入和取出的顺序一样,有下标

    可重复:可以存储相同的数据

    1. ArrayList

      底层是数组;适合查询元素

    2. LinkedList

      底层是双向链表;适合增删元素

    3. Vector

      底层是数组;线程安全,但是效率不高;不常用

  • Set

    无序且不可以重复

    无序:存入和取出的顺序不一样,没有下标

    不可重复:不可以存储相同的数据

    1. HashSet

      底层是HashMap;

    2. TreeSet

      实现了SortedSet;底层是TreeMap;能够排序

  • Map

    key—value(键值对);键是无序且不可重复的

    无序:存入和取出的顺序不一样

    不可重复:不可以存储相同的数据

    1. HashMap

      底层是哈希表;

    2. Hashtable

      底层是哈希表;线程安全,效率不高;不常用

    3. Properties

      线程安全;键和值都是String类型

    4. TreeMap

      底层是二叉树;key能够自动排序

Collection接口

Collection接口继承自Iteratable接口,它的常用方法有以下这些:

方法描述
boolean add(E e)向集合末尾添加元素(object类型)
void clear()移除这个集合中的所有元素(清空)
boolean contains(Object o)如果集合中包含o元素,返回true
boolean isEmpty()如果集合中不包含任何元素,返回true
Iterator iterator()返回该集合的元素的迭代器
boolean remove(Object o)从集合中移除元素o(前提o元素存在)
int size()返回此集合中元素的个数
object[] toArray()将该集合转换成Object数组

List集合接口和Set集合接口都需要实现上述方法,需要重点掌握contains()remove()iterator()方法,需要注意的是集合中不能添加基本数据类型,而是添加的数据类型的引用。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值