zoukankan      html  css  js  c++  java
  • Set集合、Map集合

     1、HashSet 集合

    ● 特点:

    底层数据结构:哈希表;存储、取出比较快;线程不安全,运行速度快(HashSet的底层是用HashMap实现的,因此查询效率较高,由于采用hashCode算法直接确定元素的内存地址,增删效率也挺高的)

    ● HashSet集合存储数据的结构(哈希表)

    哈希表底层使用的也是数组机制,数组中也存放对象,而这些对象往数组中存放时的位置比较特殊,当需要把这些对象给数组中存放时,那么会根据这些对象的特有数据结合相应的算法,计算出这个对象在数组中的位置,然后把这个对象存放在数组中。而这样的数组就称为哈希数组,即就是哈希表。

    当向哈希表中存放元素时,需要根据元素的特有数据结合相应的算法,这个算法其实就是Object类中的hashCode方法。由于任何对象都是Object类的子类,所以任何对象有拥有这个方法。即就是在给哈希表中存放对象时,会调用对象的hashCode方法,算出对象在表中的存放位置,这里需要注意,如果两个对象hashCode方法算出结果一样,这样现象称为哈希冲突,这时会调用对象的equals方法,比较这两个对象是不是同一个对象,如果equals方法返回的是true,那么就不会把第二个对象存放在哈希表中,如果返回的是false,就会把这个值存放在哈希表中。

    总结:保证HashSet集合元素的唯一,其实就是根据对象的hashCode和equals方法来决定的。如果我们往集合中存放自定义的对象,那么保证其唯一,就必须复写hashCode和equals方法建立属于当前对象的比较方式。

    ● ArrayList 和 HashSet 判断元素重复

    ArrayList--contains(Object o)方法,本质:调用 equals()方法。

    HashSet--contains(Object o)方法,add(E e)方法。

    2、Map 集合

    ● 注意:Map 接口中的集合都有两个泛型变量<K,V>,在使用时,要为两个泛型变量赋予数据类型。两个泛型变量<K,V>,的数据类型可以相同,也可以不同。

    ● Hashtable 是 Map 的子类,1.2版本后被 HashMap 取代,但是它的子类 Properties 依然在使用。

    3、jdk 1.5 新特性之静态导入

    作用:减少开发的代码量
    静态导入的语法:import static 包名.类名.静态成员变量;

            import static 包名.类名.静态成员函数;

    注意:导入的是成员变量和方法名。

    弊端:过度地使用静态导入会在一定程度上降低代码的可读性。

    ● 示例:

    1 import static java.lang.System.out;
    2 
    3 public class StaticImportDemo {
    4     public static void main(String[] args) {
    5         out.println("abc");
    6     }
    7 }

    4、Collections 类

    binarySearch() 找不到返回的结果:(-(insertion point) - 1)

  • 相关阅读:
    牛客练习赛51 D题
    Educational Codeforces Round 72 (Rated for Div. 2) C题
    Codeforces Round #583 (Div. 1 + Div. 2, based on Olympiad of Metropolises) C题
    Codeforces Round #583 (Div. 1 + Div. 2, based on Olympiad of Metropolises) A题
    Codeforces Round #583 (Div. 1 + Div. 2, based on Olympiad of Metropolises) A题
    Educational Codeforces Round 72 (Rated for Div. 2) B题
    Educational Codeforces Round 72 (Rated for Div. 2) A题
    《DSP using MATLAB》Problem 7.2
    《DSP using MATLAB》Problem 7.1
    《DSP using MATLAB》Problem 6.24
  • 原文地址:https://www.cnblogs.com/fanyizhan/p/10044390.html
Copyright © 2011-2022 走看看