zoukankan      html  css  js  c++  java
  • 2019/3/4 java集合学习(二)

    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-08-03】自卑和悲观是有区别的
    你现在不用写代码了吧?
    【2019-08-02】信任是一种能力
    【2019-08-01】给孩子一个渴望长大的榜样
    【一句日历】2019年8月
    【2019-07-31】一切皆有寓意
    【2019-07-30】原来努力会上瘾
    【2019-07-29】睡多了,会被宰的
    【2019-07-28】活到老,学到老
    【2019-07-27】习惯的力量很强大
  • 原文地址:https://www.cnblogs.com/qq1005801715/p/10473295.html
Copyright © 2011-2022 走看看