• 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)

  • 相关阅读:
    Socket 编程(二)
    【ASP.NET】:Ckeditor+Fckeditor的使用
    Socket编程(一):建立与客户端的连接并接受数据
    Linux基础系列:常用命令(3)
    linux 命令汇总
    Linux基础系列:常用命令(2)
    Linux基础系列:常用命令(1)
    计算机基础系列三:网络基础
    计算机基础系列二:计算机操作系统
    计算机基础系列一:计算机硬件
  • 原文地址:https://www.cnblogs.com/fanyizhan/p/10044390.html
Copyright © 2020-2023  润新知