1.1集合排序
可以通过集合的工具类java.util.Collections的静态方法sort需要注意的时,只能对List排序,因为它有序.
Collections.sort(list);
排序字符串:字符串排序是按照字符串字符的编码顺序排序的
如果要将字符串按照自己想要的方式排序就自定义元素类型实现Comparable接口重写int compareTo(Point o)方法
实现comparable接口后需要重写的方法compareto,该方法是用来定义当前对象(this)与参数对象(o)之间的大小关系,返回值不关注具体取值,值关注范围:
当返回值>0:当前对象大于参数对象(this>0)
当返回值<0:当前对象小于参数对象
当返回值=0:两个对象相等
1.2队列java.util.Queue
队列可以存放一组元素,存取元素必须遵循:FIFO即:first input first output 先进先出 queue 接口集成自collection
方法:
boolean offer(E e)入队操作,将给定的元素添加到队列末尾
E poll()出队操作,取出对首元素,取出后该元素就从队列删除
E peek()引用对首元素,获取对首元素,但是该元素还在队列中
双端队列 Deque,Deque继承自接口Queue,双端队列就是两端都可以进出的队列
方法:
boolean offer(E e)入队操作,将给定的元素添加到队列末尾
boolean offerFirst(E e)入队操作,将给定的元素添加到队首,同上
boolean offerLast(E e)入队操作,将给定的元素添加到队列末尾,同上
E poll()出队操作,取出对首元素,取出后该元素就从队列删除
E pollLast()队操作,取出对首元素,取出后该元素就从队列删除
E peek()引用对首元素,获取对首元素,但是该元素还在队列中
2 散列表Map:java.util.MapMap 查找表以key-value对的形式存放元素。所以看起来像是一个多行的表格。
map要求key不允许重复(equals比较为true)
常用实现类 java.util.HashMap散列表,使用散列表算法实现的map
v put(K k, V v)将给定的kv添加进map中若给定的key在map中已经存在,由于map要求key不允许重复,所以这是为替换value操作返回值为这个key原来对应的value值若key在map中不存在,则返回null,使用相同key替换value操作
v get(K k)根据给定的key获取对应的value,若给定的key在当前map中不存在,则返回null
remove(K k)根据key删除元素
3影响散列表查询新能的一个因素是:产生链表而链表的产生的一个主要因素是:
作为key的元素hashcode值一样,而equals比较不为true
hashcode值一样时,在map内部数组的位置相同,但是若key不同,那么就会在该位置产生一个链表,遍历链表检索数据会降低hashmap检索性能
所以要避免
因此在api文档中也有说明对equals与hashcode的重写要求:
1.成对重写,即:当重写一个类的equals方法时,就应当连同重写hashcode方法
2.一致性,即:当两个对象equals比较为true时,hashcode方法返回的数字应该相等,反之,两个对象hashcode相等,equals比较应当为true否则会在hashmap中产生链表
3.稳定性,即:当一个对象参与equals比较的属性的值没有发生改变的前提下,多次调用hashcode返回的数字应当不变。
另一个影响散列表查询速度的因素是,散列表默认初始时散列通大小为16,每当散列表容量达到75%时就会进行扩容,而又因为散列表元素位置是根据hashcode值进行计算产生的位置,当容量产生变化的时候而又保证散列表中元素依然能找到就需要经原有的元素进行重新遍历,也就是当散列表在扩容的时候会产生额外的运算,想要解决这个问题需要从散列表容量进行考虑。
map的遍历
遍历map有三种方式
1 遍历所有的key
遍历所有的keyset<K> heyset();将当前map中所有的key存入一个set集合后返回,遍历该集合等同于遍历了map中所有的key
2 遍历所有的键值对(entry)
获取每一组键值对set<entry> entrySet()map将每一个键值对以一个entry的势力保存entry是map的内部类,提供了两个常用的方法getkey() getvalue()
3 遍历所所有的value(不常用)
遍历所有的valueCollection values()将当前map中所有value存入一个集合后返回

我是初学者,如有更新不好的,欢迎这位大神指出,谢谢大家!

更多精彩以后更新,转载注明!

java-集合排序,队列,散列表map以及如何遍历的更多相关文章

  1. Java集合--阻塞队列及各种实现的解析

    阻塞队列(Blocking Queue) 一.队列的定义 说的阻塞队列,就先了解下什么是队列,队列也是一种特殊的线性表结构,在线性表的基础上加了一条限制:那就是一端入队列,一端出队列,且需要遵循FIF ...

  2. Java集合(十)实现Map接口的HashMap

    Java集合(十)继承Map接口的HashMap 一.HashMap简介(基于JDK1.8) HashMap是基于哈希表(散列表),实现Map接口的双列集合,数据结构是“链表散列”,也就是数组+链表 ...

  3. Java集合中List,Set以及Map等集合体系详解

    转载请注明出处:Java集合中List,Set以及Map等集合体系详解(史上最全) 概述: List , Set, Map都是接口,前两个继承至collection接口,Map为独立接口 Set下有H ...

  4. Java 集合 ArrayList和LinkedList的几种循环遍历方式及性能对比分析 [ 转载 ]

    Java 集合 ArrayList和LinkedList的几种循环遍历方式及性能对比分析 @author Trinea 原文链接:http://www.trinea.cn/android/arrayl ...

  5. Java集合排序及java集合类详解--(Collection, List, Set, Map)

    1         集合框架 1.1         集合框架概述 1.1.1         容器简介 到目前为止,我们已经学习了如何创建多个不同的对象,定义了这些对象以后,我们就可以利用它们来做一 ...

  6. JAVA集合框架(三)-Map

    前言 Map是java中用于存储键值对映射的接口.是解决编程问题最常用的数据结构之一.在工作中,有时候为实现一个功能可能写了好大一段代码,运行是ok了,但是就是不想回头再看,不敢相信自己写的这么烂.这 ...

  7. Java集合List、Set、Map

    集合是 java 基础中非常重要的一部分,同样也是 Java 面试中很重要的一个知识点.所以,给王小整理了这篇关于集合的文章. 1.接口继承关系以及实现 集合类存放于 Java.util 包中,主要有 ...

  8. Java集合——List,Set,Map总结笔记

    1. 集合 Collection 1.1 Java 集合框架 ​ ​ ​ ​ ​ ​ ​ ​ Java 集合框架位于 java.util 包中.Java 集合框架主要包括两种类型的容器,一种是集合(C ...

  9. java 集合排序(转)

    Java API针对集合类型排序提供了两种支持:java.util.Collections.sort(java.util.List)java.util.Collections.sort(java.ut ...

随机推荐

  1. ACM 刷题记录

    HDU Multi-University Training Contest 题目来源 题目 知识点 时间复杂度 完成情况 2019 Contest8 A Acesrc and Cube Hyperne ...

  2. Python列表推导式,字典推导式,元组推导式

    参考:https://blog.csdn.net/A_Tu_daddy/article/details/105051821 my_list = [ [[1, 2, 3], [4, 5, 6]] ] f ...

  3. 第1章 C++绪论

    写于2022年5月13日: 开通博客用于学习记录分享及交流. C++复习笔记内容参考教材[双语版C++程序设计(第2版)][(爱尔兰)Paul Kelly(P. 凯利),苏小红]. 本书的网站:htt ...

  4. SQL的语法

    SQL的语法 SQL通用语法 SQL语句可以单行或多行书写,以分号(";")结尾. SQL语句可以使用空格或缩进增强可读性. MySQL数据库的SQL语句不区分大小写(建议关键字大 ...

  5. call apply bind的作用及区别? 应用场景?

    call.apply.bind方法的作用和区别: 这三个方法的作用都是改变函数的执行上下文,换句话说就是改变函数体内部的this指向,以此来扩充函数依赖的作用域 1.call 作用:用于改变方法内部的 ...

  6. 用QT制作3D点云显示器——QtDataVisualization

    因为QT的三维显示模块QtDataVisualization已经对个人开发免费开放了,所以在制作点云,地图,表格之类的东西的时候,其实我们都不需要使用QtCharts或者QOpenGL模块了.直接使用 ...

  7. 前端学习 linux —— shell 编程

    前端学习 linux - shell 编程 shell 原意是"外壳",与 kernel(内核)相对应,比喻内核外的一层,是用户和内核沟通的桥梁.shell 有很多种,国内通常使用 ...

  8. BUUCTF-刷新过的图片

    刷新过的图片 刷新在MISC中比较特殊,一般是指F5隐写方式 直接使用工具提取出来,发现生成的是Pk开头的,应该是zip格式 使用16进制确认了是ZIP,将生成的output.txt改为output. ...

  9. 十分钟快速实战Three.js

    前言 本文不会对Three.js几何体.材质.相机.模型.光源等概念详细讲解,会首先分成几个模块给大家快速演示一盒小案例.大家可以根据这几个模块快速了解Three.js的无限魅力.学习 我们会使用Th ...

  10. SpringBoot整合RocketMQ

    1.RocketMQ的下载与配置 到官网选择想要的版本下载即可,https://rocketmq.apache.org/release_notes/ 下载速度会比较慢,这里提供目前最新版本4.9.3的 ...