zoukankan      html  css  js  c++  java
  • 2.集合处理

    一.集合处理

    1.只要重写equals就必须重写hashCode

    • Set存储的对象会根据hashCode和equals进行判断

    • Map的键如果是对象也必须重写

    • String已经重写了hashCode和equals对象,所以可以利用String作为Map的键

    • 一般我们遵守equals相等hashCode必须相同,而hashCode相同equals不一定相同

    2.ArrayList的subList结果不可以强转成ArrayList,否则会报错。由于subList返回的是ArrayList的内部类SubList,并不是ArrayList而是ArrayList的一个视图,对于SubList自列表的所有操作最终会反映到列表上

    3.集合转数组方式,避免强制类型转换,使用toArray(T[] array)方法而不是toArray()

    标准写法:

    String[] array = new String[list.size()];
    list.toArray(array);

    错误写法:

    • 不能把Object[]转为任意类型数组,只能一个一个转

    4.使用工具类Arrays.asList()把数组转换成集合是,不能使用集合的相关方法否则报错,asList返回对象是一个Arrays的内部类,并没有实现集合的方法。

    5.不要在foreach循环里进行remove/add操作,使用Iterator方式进行操作,如果是并发的需要加锁。

    由于使用remove/add操作会是原数据移动,foreach是拿下标进行遍历,Iterator是拿到地址。

    错误示例:

     正确示例:

     6.使用entrySet遍历Map类集合KV,而不是keySet方式遍历。由于keySet遍历2次,第一次转化为iterator,第二次从中取key对应的value。而entrySet遍历一次效率高,推荐使用Map的foreach方法

    7.Map类集合K/V能不能存储null值情况

     

    集合类

    Key

    Value

    Super

    说明

    Hashtable

    不允许为 null

    不允许为 null

    Dictionary

     线程安全

    ConcurrentHashMap

     不允许为 null

    不允许为 null

    AbstractMap

    锁分段技术(JDK8:CAS)

    TreeMap

     不允许为 null

    允许为 null

    AbstractMap

    线程不安全

    HashMap

    允许为 null

    允许为 null

    AbstractMap

    线程不安全

  • 相关阅读:
    解析Zigbee技术在智能家居应用中的优缺点
    ZigBee无线网络技术在小区路灯照明系统的应用
    Zigbee技术特点
    梯度下降法-理解共轭梯度法
    感知机--理解系数向量和样本点递归
    fisher线性判别
    iso data 聚类算法
    近邻算法--类与类间最小损失函数
    聚类算法--理解最大最小距离分类
    类间距离测度方法
  • 原文地址:https://www.cnblogs.com/zhihaospace/p/12423812.html
Copyright © 2011-2022 走看看