首页 > 其他分享 >回顾集合及其数据结构

回顾集合及其数据结构

时间:2023-03-16 17:55:34浏览次数:63  
标签:遍历 回顾 索引 重复 增删 forEach 集合 数据结构

集合

1.集合的体系

Collection

集合分为单列集合Collection和双列集合Map

Collection只有增删功能没有改查功能,特点是单列集合所有共性功能,有三种遍历方式(1.迭代器2.增强for3.forEach())

  • List

List集合有增删改查功能,,有4种遍历方式(1.迭代器2.增强for3.forEach()4.普通for)

特点是有序,可重复,有索引

List 接口下实现类ArrayList和LinkedList

  • ArrayList(底层数据结构:数组)

ArrayList有增删改查功能,有序,可重复,有索引,有4种遍历方式(1.迭代器2.增强for3.forEach()4.普通for)

特点:是查询快,增删慢.

  • LinkedList(底层数据结构:双向链表)

LinkedList有增删改查功能,还有特有的首尾操作方法,,特点是有序,可重复,有索引有4种遍历方式(1.迭代器2.增强for3.forEach()4.普通for)

特点是查询慢,增删快.

  • Set

Set有增删改查功能,无序,不重复,无索引,有三种遍历方式(1.迭代器2.增强for3.forEach())

  • HashSet(底层数据结构是哈希表(数组+链表+红黑树))

HashSet有增删改查功能,无序,不重复,无索引,有三种遍历方式(1.迭代器2.增强for3.forEach()).

无序的底层原理:存入值时,会得到数据的hash值,跟据hash值和数组长度进一步计算得出在数组种的位置,与存入值的顺序无关.

不重复的底层原理:当hash值相同,得出索引位置相同,会调用equals方法判断,如果时true,则不存,否则,存.

所以当往集合种存入自定义对象时,需要重写hashcode和equals方法来判断存入是否重复

  • LinkedHashSet(底层数据结构是在哈希表的基础上还有一个双向链表)其是HashSet的一个子类

LinkedHashSet有增删改查功能,有序,不重复,无索引,有三种遍历方式(1.迭代器2.增强for3.forEach())


  • TreeSet(底层数据结构是红黑树)

TreeSet有增删改查功能,可排序,不重复,无索引,有三种遍历方式(1.迭代器2.增强for3.forEach())

排序的原理:对于String类和包装类有自己的排序规则,默认是升序.

对于自定义类的排序规则:

1.让该类实现Comparable接口,重写compareTo方法定义排序规则

2.创建集合对象时,给一个比较器对象,制定排序规则

3.两种都有,则使用比较器

Map

Map是双列集合,一个数据有两个值,一个key,一个value.map也被称为键值对集合.

三种遍历方法

1.键找值

通过Map集合获取所有key的Set集合(keySet()方法),遍历后再通过get(key)获得key对应的value

2.键值对

通过Map集合获取所有键值对的Set集合(entrySet()方法),遍历后获取每一个键值对对象的key和value

3.调用集合的forEach方法和lambda表达式

常用API

put(k,v)添加元素

remove(k)删除键值对

clear()清空

containsKey(k)判断是否有指定key

containsValue(v)判断是否有指定值

size()获取键值对个数

特点

1.:Map集合的key是无序,不重复,无索引的.value可以重复

2.Set集合的底层就是Map

  • HashMap(同HashSet)

特点:无序,不重复,无索引

  • LinkedHashMap(同LinkedHashSet)

特点:有序,不重复,无索引

  • TreeMap(同TreeSet)

特点:可排序,不重复,无索引

标签:遍历,回顾,索引,重复,增删,forEach,集合,数据结构
From: https://www.cnblogs.com/zlsame/p/17216667.html

相关文章

  • Mongo 将数组列分多个文档(显示对象集合中某一个字段)
    db.app_history_submit.aggregate([{"$match":{"orderNo":"xxx"}},{"$match":{"version":1}},{"$unwind":"$submitParam.loanDetails"},......
  • 【数据结构】B树与B+树
    简介:本文主要介绍了B树和B+树的插入、删除操作。一、B树在1970年,Bayer&McCreight发表的论文《ORGANIZATIONANDMAINTENANCEOFLARGEORDEREDINDICES》(大型有序索引......
  • Java Map集合
    Map接口成对的对象(两个对象)才能作为一个集合元素对象,一对才算一个,Key(主键):Value(值)Map的Key对象是不可重复的key对象(是具有唯一性的能唯一地代表某个value对象的......
  • Vue.js 数据代理-回顾Object.defineProperty方法
    视频<!DOCTYPEhtml><html> <head> <metacharset="UTF-8"/> <title>回顾Object.defineproperty方法</title> </head> <body> <scripttype="text/javascript"......
  • 数组模拟环形队列java(数据结构与算法)
    思路:背景队列有两种实现方式:1、数组,2、链表在数组实现队列时,有的教科书中只说了队列满的条件是(rear+1)%manSize=front这个公式真让人摸不着头脑原来:这是数组模拟环......
  • 01. 数据结构概述
    一、什么是数据结构  数据结构(DataStructure)是计算机中存储、组织数据的方式,它是数据对象、以及存在于该对象的实例和组成实例的数据元素之间的各种联系。这些联系可......
  • 集合
    集合概念:对象的容器,定义了对多个对象进行操作的常用方法。可实现数组的功能。和数组的区别:数组长度固定,集合长度不固定数组可以存储基本类型和引用类型,集合只能存储引......
  • 【数据结构】栈与队列 - 习题
    其实是老师布置的作业。稍微写了些注释,然后直接把代码扔上来,希望能帮到有需要的同学。拒绝抄作业,写那么多注释就是让你来读懂代码的。栈-使用C++类实现//使用C++类......
  • 集合的遍历
    List的遍历ArrayList<String>list=newArrayList<>();===1forEach循环遍历=== list.forEach(newConsumer<String>(){@Overridepublicvoida......
  • MongoDb集合改名
    publicbooleanmongoDbCollectionNameUpdate(StringoldName,StringnewName){/连接MongoDB数据库/MongoClientmongoClient=MongoClients.create(mongourl);MongoDa......