zoukankan      html  css  js  c++  java
  • java集合

    List方法与Set方法的区别
    1、重复对象
    list方法可以允许重复的对象,而Set方法不允许重复对象
    2、null元素
    list可以插入多个null元素,而Set只允许插入一个null元素
    3、容器是否有序
    list是一个有序的容器,保持了每个元素的插入顺序。即输出顺序就是输入顺序,而set方法是无序容器,无法保证每个元素的存储顺序,TreeSet通过 Comparator 或者 Comparable 维护了一个排序顺序
    TreeSet排序:实现Comparable接口,重写接口中的compareTo方法,返回正数是升序,返回负数是降序,返回0是相等。
    HashMap排序输出:1、按照Key排序,把Key取出,Arrays.Sort排序Key,然后按照Key的顺序循环;2、按照Value排序,把entrySet取出,使用list.Sort或者Collections.Sort方法重写compareTo排序。https://www.jb51.net/article/178238.htm
    4、常用的实现类
    list方法常用的实现类有ArrayList、LinkedList 和 Vector。其中ArrayList 最为流行,它提供了使用索引的随意访问,而LinkedList 则对于经常需要从 List 中添加或删除元素的场合更为合适,Vector 表示底层数组,线程安全。
    Set方法中最流行的几个实现类是 HashSet、LinkedHashSet 以及 TreeSet。最流行的是基于 HashMap实现的 HashSet;
    TreeSet 实现了 SortedSet 接口,底层使用红黑树,因此 TreeSet 是一个根据其 compare() 和compareTo() 的定义进行排序的有序容器。
    TreeSet只能放同一类型的对象。
    5、Set判断两个对象是否相同,使用的是equals(),而不是使用==,Set是非线程安全的。
    6、ArrayList和LinkedList不具有线程安全性。若想在多线程下使用,应该使用Colletions类中的静态方法synchronizedList()对ArrayList和LinkedList进行调用即可。
    7、LinkedList与ArrayList最大的区别是LinkedList更加灵活,并且部分方法的效率比ArrayList对应方法的效率要高很多,对于数据频繁出入的情况下,并且要求操作要足够灵活,建议使用LinkedList;对于数组变动不大,主要是用来查询的情况下,可以使用ArrayList。
    8、ArrayList不能使用多态
    9、Arrays.asList(),参数需要是包装类。
    10、循环List的三种方式:for(int i=0;i<list.length;i++)、增强for(object obj:list)、迭代器Iterator:list.iterator();
    11、Set无序性不是随机性,元素存储顺序并不是按照添加顺序来存的,是通过hashCode来计算存放位置的。不可重复性:Set中的元素不可重复。
    12、HashSet是数组加链表的方式存储数据的。
    13、Set一致性:Set中的对象如果equals返回true,那hashCode()方法返回的哈希值也必须要相同;一个对象多次调用hashCode()返回的值应该一样;重写equals用到的字段,重写hashCode也必须参与计算。
    14、Map》
    Hashtable:不能存null
      》Properties
    HashMap:可以存null
      》LinkedHashMap
    TreeMap

  • 相关阅读:
    vue生命周期钩子函数
    mongodb window安装配置
    git 添加远程仓
    webpack + vue + node 打造单页面(入门篇)
    git 命令
    javascript 利用FileReader和滤镜上传图片预览
    javascript 一些特殊的字符运算
    Es6 Symbol.iterator
    配置 github 上的程序
    Redis 的数据类型
  • 原文地址:https://www.cnblogs.com/xsj1989/p/14871288.html
Copyright © 2011-2022 走看看