java集合学习(二)

在学完ArrayList 和 LinkedList之后,基本已经掌握了最基本的java常用数据结构,但是为了提高程序的效率,还有很多种特点各异的数据结构等着我们去运用,类如可以快速寻找的HashMap,可以自动排序而且不重样的TreeSet,可以保证线程安全的Hashtable,既可以保证数据不重样又可以键值存放的HashSet等等,这些数据结构都适用于不同的场景,各有其长处,我们应该仁者见仁,智者见智,数据结构的使用因需求而异,没有最好的数据结构类,而是有最适合的类。

首先着重了解一下极大提高搜索效率的HashMap.在我们没有学习HashMap的时候,搜索某一对象只能从头开始寻找,这是非常浪费时间的。如果我们能够像查字典一样,根据搜索的对象的信息指定存放的位置,再到需要的时候,再根据它的信息来索引,是不是比传统的方法快很多呢?于是,在计算机科学家的探索之下,HashMap诞生了,首先来描绘一下它的工作原理:存放对象(put)的时候,需要把对象和一个键值对应起来,再根据对象对应的键值产生一个hashcode,再根据hashcode存放到由LinkedList组成的子数据结构,如果当前为空,会创建LinkedList。就是这样,高效率的HashMap就完成了,就是相当我们现实生活用的字典了。

HashMap的 常用Api:

get(Object key) :
返回指定键所映射的值;如果此映射不包含该键的映射关系,则返回 null

put(K key, V value) 
将指定的值与此映射中的指定键关联(可选操作)。

putAll(Map<? extends K,? extends V> m) 
从指定映射中将所有映射关系复制到此映射中(可选操作)。

values() 
返回此映射中包含的值的 Collection 视图。

size() 
返回此映射中的键-值映射关系数。

remove(Object key) 
如果存在键的映射关系,则将其从此映射中移除(可选操作)。

有关Hashmap的高效算法:在计算与某一对象重复的有多少个时,我们可以用HashMap来存放全部对象数据,然后HashMap存放的是该对象对的数组,看是否重复的时候可以get()得到一个数组,再看数组的长度就可以知道与之重复的有多少个了!

Collections工具类:

排序:collections.sort(  集合类),可以用这个来排序的一般是实现了Comparable接口的,基本类型的封装类都实现了该接口。在对其他类进行排序时,需自己实现该类。实现方法:

Class Hero implements Comparable<Hero>{

//实现

Public int compareTo(  Hero H) {

If(  H.hp >hp)//这样是从小到大,反过来是从大到小

Return 1;

Else

Return -1;

}

这样,就可以实现自定义类的自定义排序。

TreeSet的了解:

TreeSet是由二叉树实现的,实现了Set类,所以其中包含的数据是不重复的,而且它是有序的,默认的排序方式是从小到大。如果我们要重新定义排序方法,则需要创建一个Comparator 对象,方法如下:

Comparator<Interger> c = new Comparator<>(){

Public int compare( int a , int b){

  If(  a > b)//从小到大!

Return 1;

Else if(a == b)

Return 0;

Else

Return -1;

}};

还有其他各种有趣的类的比较:

HashSet: 无序
LinkedHashSet: 按照插入顺序
TreeSet: 从小到大排序

 

 

 

 

 

 

 

 

 

2019/3/4 java集合学习(二)的更多相关文章

  1. 2019/3/2周末 java集合学习(一)

    Java集合学习(一) ArraysList ArraysList集合就像C++中的vector容器,它可以不考虑其容器的长度,就像一个大染缸一 样,无穷无尽的丢进去也没问题.Java的数据结构和C有 ...

  2. “全栈2019”22篇Java异常学习资料及总结

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"22篇Ja ...

  3. Java集合学习(9):集合对比

    一.HashMap与HashTable的区别 HashMap和Hashtable的比较是Java面试中的常见问题,用来考验程序员是否能够正确使用集合类以及是否可以随机应变使用多种思路解决问题.Hash ...

  4. Java开发学习(二十五)----使用PostMan完成不同类型参数传递

    一.请求参数 请求路径设置好后,只要确保页面发送请求地址和后台Controller类中配置的路径一致,就可以接收到前端的请求,接收到请求后,如何接收页面传递的参数? 关于请求参数的传递与接收是和请求方 ...

  5. Java开发学习(二十六)----SpringMVC返回响应结果

    SpringMVC接收到请求和数据后,进行了一些处理,当然这个处理可以是转发给Service,Service层再调用Dao层完成的,不管怎样,处理完以后,都需要将结果告知给用户. 比如:根据用户ID查 ...

  6. 转:深入Java集合学习系列:HashSet的实现原理

    0.参考文献 深入Java集合学习系列:HashSet的实现原理 1.HashSet概述: HashSet实现Set接口,由哈希表(实际上是一个HashMap实例)支持.它不保证set 的迭代顺序:特 ...

  7. java集合学习(2):Map和HashMap

    Map接口 java.util 中的集合类包含 Java 中某些最常用的类.最常用的集合类是 List 和 Map. Map 是一种键-值对(key-value)集合,Map 集合中的每一个元素都包含 ...

  8. Java开发学习(二十二)----Spring事务属性、事务传播行为

    一.事务配置 上面这些属性都可以在@Transactional注解的参数上进行设置. readOnly:true只读事务,false读写事务,增删改要设为false,查询设为true. timeout ...

  9. Java开发学习(二十四)----SpringMVC设置请求映射路径

    一.环境准备 创建一个Web的Maven项目 参考Java开发学习(二十三)----SpringMVC入门案例.工作流程解析及设置bean加载控制中环境准备 pom.xml添加Spring依赖 < ...

随机推荐

  1. Windows7下安装、部署Weblogic和发布war项目

    安装 1 从官方下载安装包 链接 2 下载之后,放到 Java8\jdk1.8.0\bin目录下 3 打开cmd,输入 java -jar . 4 5 6 下面是我自定义的目录, 7 8 9 10 1 ...

  2. python--第二十四天总结

    CMDB介绍 CMDB --Configuration Management Database 配置管理数据库, CMDB存储与管理企业IT架构中设备的各种配置信息,它与所有服务支持和服务交付流程都紧 ...

  3. 【相关网站 - 01】- Java 相关网站

    一.官方网站 1. Java 官方网站 https://www.java.com/zh_CN/ 2. Spring 官方网站 http://spring.io/ 1. Spring Framework ...

  4. 第三周博客总结 <西北师范大学| 周安伟>

    一,本周助教小结 工作稳步推进,时间分配合理,点评效率有所提高,主要进行了评分工作,工作情况都汇总到了Excel中. 二,助教本人博客       https://home.cnblogs.com/u ...

  5. 20175126《Java程序设计》第五周学习总结

    # 20175126 2016-2017-2 <Java程序设计>第五周学习总结 ## 教材学习内容总结 - 本周学习方式主要为手动敲代码并理解内容学习. - 学习内容为教材第六章,本章内 ...

  6. [leetcode]272. Closest Binary Search Tree Value II二叉搜索树中最近的值2

    Given a non-empty binary search tree and a target value, find k values in the BST that are closest t ...

  7. python基础(16)私有类,类,类变量

    1.私有类: class My: def test(self): self.__password = 123456 def say(self): print('password',self.__pas ...

  8. Zookeeper使用--命令行

    一.前言 在学习了Zookeeper相关的理论知识后,下面接着学习对Zookeeper的相关操作. 二.Zookeeper部署 Zookeeper的部署相对来说还是比较简单. Zookeeper有三种 ...

  9. 将Windows系统移到另一个硬盘

    原先的128GB SSD,给Windows用是够了,最近虚拟机用得多,靠以前的SSD外挂着用,实在有点不爽,就入手一个256GB的,重装系统是个令人头疼的事情,当然不能干.想起来以前另一个机器操作的时 ...

  10. Linux驱动之USB鼠标驱动编写

    本篇博客分以下几部分讲解 1.介绍USB四大描述 2.介绍USB鼠标驱动程序功能及框架 3.介绍程序用到的结构体 4.介绍程序用到的函数 5.编写程序 6.测试程序 1.介绍USB四大描述符 USB设 ...