首页 > 其他分享 >集合

集合

时间:2023-06-14 19:35:55浏览次数:51  
标签:LinkedList ArrayList 无序 线程 key 集合

含义

  1. 集合是Java API所提供的一系列类,可以用于动态存放多个对象 (集合只能存对象)
  2. 集合与数组的不同在于,集合是大小可变的序列,而且元素类型可以不受限定,只要是引用类型。(集合中不能放基本数据类型,但可以放基本数据类型的包装类)
  3. 集合类全部支持泛型,是一种数据安全的用法。

集合与数组的不同

数组:一旦初始化后长度不可变,元素类型受限定(String类型的数组只能装String的数据),数组可以存储基本数据类型

集合:长度可变的序列,元素类型不受限定(一个集合可以存储多个数据类型的元素),集合只能存储引用数据类型

Collection家族

集合_迭代器


List接口

特点:有序且可重复(因为List接口中添加了许多针对下标操作的方法)

实现类:

  1. ArrayList
  2. LinkedList
  3. Vector
  4. Stack

Set接口

特点:无序且不可重复

实现类:

  1. HashSet
  2. LinkedHashSet
  3. TreeSet

Map家族

集合_数组_02

实现类:

  1. HashMap
  1. LinkedHashMap
  2. Hashtable
  3. ConcurrentHashMap
  4. TreeMap
  5. Properties

泛型

含义:数据安全的做法

泛型限定:

?表示什么类型都可以

? extends A 表示元素必须是A类或A的子类

? super A 表示元素必须是A类或A的父类

迭代器

含义:遍历集合中的数据

分类:Iterator 和 ListIterator

Iterator 和 ListIterator 区别

Iterator :Collection接口下所有的实现类都可以获取的迭代器,可以在遍历时删除元素

ListIterator :List接口下所有的实现类可以获取的迭代器,可以在遍历时删除(remove)、替换(set)、添加元素,也可以指定下标开始遍历,还可以倒叙遍历

比较器接口

作用:排序时使用

分类:

内置比较器:Comparable - compareTo()

外置比较器:Comparator - compare()

使用场景:

内置比较器:对象要想存入TreeSet、TreeMap中,对象所属的类必须要实现内置比较器

外置比较器:当内置比较的规则不满足现在的需求,但又不能改动内置比较器规则时

优先级别:外置比较器 > 内置比较器

注意

  1. Collection 与 Map的区别

Collection 存单个值,可以获取迭代器进行遍历

Map存两个值(Key-Value),不可以获取迭代器,不能遍历(Map可以间接遍历)

  1. 理解Set为什么是无序

无序:存入顺序和取出顺序不一致,无序不等于随机

  1. ArrayList 与 LinkedList的区别

使用上的区别:

LinkedList添加了

队列模式-先进先出(removeFirst())

栈模式-先进后出(removeLast())

效率上的区别:

ArrayList底层数据结构是一维数组

LinkedList底层数据结构是双向链表

添加 - 不扩容的情况:ArrayList快

添加 - 扩容的情况:LinkedList快

删除:LinkedList快

查询:ArrayList快

修改:ArrayList快

注意:工作中常用ArrayList,因为很多需求都需要使用查询功能,ArrayList查询更快

  1. 各种集合的应用场景

ArrayList:存数据,线程不安全

LinkedList:队列模式、栈模式,线程不安全

Vector:弃用,线程安全

Stack:弃用,线程安全

HashSet:去重+无序,线程不安全

LinkedHashSet:去重+有序,线程不安全

TreeSet:排序,线程不安全

HashMap:存key+value,key去重,无序,线程不安全

LinkedHashMap:存key+value,key去重,有序,线程不安全

Hashtable:弃用,存key+value,key去重,无序,线程安全,方法加锁-效率低

ConcurrentHashMap:存key+value,key去重,无序,线程安全,局部加锁、CAS-效率高

TreeMap:存key+value,针对于Key排序

Properties:配置文件

标签:LinkedList,ArrayList,无序,线程,key,集合
From: https://blog.51cto.com/u_16154651/6480131

相关文章

  • JS中, Set为什么是带键的集合?
    起因这两天写了个LRUCache,用到了Set做AllowList,来判断API是否应该被缓存.查MDN时,发现Set被归类在KeyedCollection中.下意识中,总认为Set属于Array的一类,应该是IndexedCollection.感觉奇怪,所以多查了查文档过程首先,看了下MDN的文档、ECMA的文档.都没有明确......
  • Java集合去重的几种方法
    一、List的contains方法去重示例代码如下:importjava.util.ArrayList;importjava.util.List;/***@authorqinxun*@date2023-06-13*@Descripion:List集合去重*/publicclassRepeatDemo{publicstaticvoidmain(String[]args){longstart=S......
  • 2023年6月13日,Collections集合工具类,Properties配置文件类,集合使用小结
    1.Properties配置文件类创建配置文件,DBConfig.properties在src目录下username=rootpassword=123456创建test01类packagecom.wz.properties_class;importjava.io.IOException;importjava.util.Properties;publicclasstest01{/***知识点:配置文件类propertie......
  • 集合框架
    1.使用集合框架的缘由由于数组在创建时会默认定义数组长度,而数组长度固定不变,所以导致数组的赋值及创建会浪费内存空间,集合作为可以更改长度的“数组”,解决了内存浪费的现象。2.Java集合框架架构图(1)集合有两个父接口,Collection和Map(2)Collection有两个子接口List和Set(3)Li......
  • java如何往List<? extends number>中加入元素?体会范型集合父子关系以及范型通配符的使用
    以下来自一个stackoverflow的一个问答,写的很清楚。基本上就是子类集合的引用付给父类引用,如果父类的引用变量声明的是<?extendsParent>,则父类引用变量只能对集合进行读操作,读出来的变量是Parent类型,这是因为不确定该父类引用变量指向的是什么类型的集合,可以是Child1,也可以C......
  • c# 动态数据集合ObservableCollection
    WPF中对ListBox、ListView、TreeView等实现数据双向绑定经常会用到ObservableCollection<T>类。ObservableCollection<T>类表示一个动态数据集合,它是实现了INotifyPropertyChanged接口的数据集合,在添加项、移除项或刷新整个列表时,此集合将提供通知。如果要实现集合中的某字段......
  • 使用pymongo重命名集合字段
    背景根据mongo规范,需要将多个库的多个集合中的所有驼峰字段名称全部改为下划线分割的。如果使用mongo命令重命名集合字段,处理起来比较麻烦:表结构的形式比较多:比如嵌套子文档、嵌套列表文档等有些集合的字段不固定有些集合的字段较多多个库的多个集合,需要执行多次所以可以......
  • 集合框架
    一:集合框架简介1.为什么使用集合框架?由于数组在创建的时候会默认定义数组的长度,而数组的长度是不变的,而导致数组的赋值及创建会有内存浪费的现象,于是集合作为可以更改长度的”数组“可以解决内存浪费的现象。2.集合框架架构图集合有两个副接口collection;mapcollrction有两个......
  • 学习日记——集合
    1.集合框架简介(1)为什么使用集合框架由于数组在创建的时候会默认定义数组的长度,而数组的长度是不变的,导致数组的创建和赋值会导致内存浪费,于是集合作为可以更改长度的特殊的数组,可以解决内存浪费的现象。(2)Java集合框架架构图(3)Java集合框架特点List特点:有序,不唯一(可重复)Se......
  • 51nod-1280 前缀后缀集合
    原题链接1280 前缀后缀集合题目来源: Codility基准时间限制:1 秒空间限制:131072 KB分值: 40 难度:4级算法题 收藏 关注一个数组包含N个正整数,其中有些是重复的。一个前缀后缀集是满足这样条件的下标对(P,S),0<=P,S......