zoukankan      html  css  js  c++  java
  • java集合知识点总结

    下面是java中常见的集合:

    List--列表:内部元素有序,可以重复,

      ArrayList:线程不安全,效率高。数据结构是线性表,底层结构是顺序表,也就是数组,有唯一的下标来指定元素的位置,查询快,增删慢。

      Vector:类似于ArrayList,但是线程安全,代价就是效率低。完全可以用ArrayList来替代,

      

    List<String> list = Collections.synchronizedList(new ArrayList<String>())
    View Code

          上面代码就是将ArrayList改为线程安全的,其余的操作基本和原本一样。

      LinkedList:线程不安全,效率高。数据结构是线性表,底层结构是单链表,查询慢,但是增删快

    Set--集合:内部元素无序,不可重复

      HashSet:线程不安全,效率高。数据结构是哈希表,底层结构是顺序表,LinkedHashSet的底层结构是单链表,具体类比ArrayList,

      TreeSet:线程不安全,效率高。数据结构是红黑树,和HashSet的区别在于,它的元素是有序的,而这里的有序和我们在List谈到的有序不是一个意思,List中的有序是指你输入["gol","long","xiao"],在存储的时候下标0对应的就是"gol",下标1对应的就是"long",而这里的有序指的是元素在存储时自己遵守的一套规则,因为本身元素是不可重复的,和我们的添加顺序没有关系,比如我们输入[3,2,1],在存储是就会变为[1,2,3],按照1,2,3这个规则来排序,如果想得到类似于list的那种有序,LinkedHashSet可以实现。

    Map--字典:通过“键”寻找“值”

      HashMap:线程不安全,效率高。数据结构是哈希表,底层结构是顺序表,LinkedHashMap的底层结构是单链表,具体类比ArrayList

      TreeMap:线程不安全,效率高。数据结构是红黑树,可以存储 null 值

      HashTable:线程安全,效率低。数据结构是哈希表,不能存储 null 值

    迭代器(iterator)遍历

      list可以通过索引取值遍历,map可以通过键值,那set要怎么遍历呢?其实map的键的集合就是一个set,我们不处理怎么遍历set的问题就无法查看set和map中的值了,于是就有了迭代器

            HashSet set = new HashSet<>();
            set.add(99);
            set.add(100);
            set.add("gol");
            Iterator it = set.iterator();
            while (it.hasNext()){
                System.out.println(it.next());
            }

      迭代器就是一种提取集合中数据的接口,我们只需要对集合调用iterator()方法生成一个迭代器集合,而其内部如何生成对我们隐藏了,在迭代器中修改原集合的会触发ConcurrentModificationException(并发修改异常),也就是说在迭代器中不要进行修改(修改元素的值可以的,只要没有改变原集合的长度)的操作,会出错。若想在迭代的时候修改长度,List集合特有的listIterator()方法可以实现,(但仅仅是List有此方法)

      而增强for循环就是在底层封装了迭代器,所有同样存在并发修改异常

        HashSet<Integer> set = new HashSet<>();
            set.add(99);
            set.add(100);
            set.add(98);for (Integer s:set){
                System.out.println(s);
            }
  • 相关阅读:
    个人技术博客(α)------javaweb的学习路程
    使用github客户端上传文件(瓜皮教程)
    软件工程实践 : 团队项目(第三次作业) 需求规格说明书
    软件工程实践 · 团队项目(第二次作业)
    软件工程实践:结对作业(第二次作业)
    软件工程实践:结对作业(第一次作业)
    软件工程实践 · 团队项目(第一次作业)
    班级连接
    软件工程 第二次作业(改)
    Shader Forge 刀光溶解
  • 原文地址:https://www.cnblogs.com/gollong/p/9662887.html
Copyright © 2011-2022 走看看