• day1 java基础回顾-集合


    1、集合

    1.1 集合的类型与各自的特性

    ---|Collection: 单列集合
                ---|List: 有存储顺序, 可重复
                    ---|ArrayList:    数组实现, 查找快, 增删慢
                                        由于是数组实现, 在增和删的时候会牵扯到数组
    增容, 以及拷贝元素. 所以慢。数组是可以直接按索引查找, 所以查找时较快
            ---|LinkedList:    链表实现, 增删快, 查找慢由于链表实现, 增加时只要让前一个元素记住自己就可以, 删除时让前一个元素记住后一个元素, 后一个元素记住前一个元素. 这样的增删效率较高但查询时需要一个一个的遍历, 所以效率较低
                    ---|Vector:    和ArrayList原理相同, 但线程安全, 效率略低
     和ArrayList实现方式相同, 但考虑了线程安全问题, 所以效率略低
                ---|Set: 无存储顺序, 不可重复
                    ---|HashSet   线程不安全,存取速度快。底层是以哈希表实现的。
            ---|TreeSet   红-黑树的数据结构,默认对元素进行自然排
                                    序(String)。如果在比较的时候两个对象
                                    返回值为0,那么元素重复。
    ---| Map: 键值对   键不可重复,键可以重复
            ---|HashMap    线程不安全,存取速度快。底层是以哈希表实现的.
    ---|TreeMap   红-黑树的数据结构,默认对元素进行自然排
                    序(String)。如果在比较的时候两个对象
                     返回值为0,那么元素重复
            ---|HashTable  底层也是使用了哈希表 维护的,存取的读取快,存储元素是
                             无序的。

    1.2遍历集合

    1.2.1遍历集合的几种方式

    1,使用迭代器Iterator的方式。

    2,使用增强for循环的方式。

    3,如果有下标,则可以使用下标的方式。

       1.2.2遍历数组

     1 public static void main(String[] args) {
     2     // 遍历数组:
     3     String[] arr = new String[] { "xx", "yy", "zz" };
     4 
     5     // 1,增强的for循环
     6     for (String elt : arr) {
     7         System.out.println(elt);
     8     }
     9 
    10     // 2,下标的方式
    11     for (int i = 0; i < arr.length; i++) {
    12         System.out.println(arr[i]);
    13     }
    14 }

    1.2.3遍历List

     1 public static void main(String[] args) {
     2     // 遍历List:
     3     List<String> list = new ArrayList<String>();
     4     list.add("aa");
     5     list.add("bb");
     6     list.add("cc");
     7 
     8     // 1,增强的for循环
     9     for (String elt : list) {
    10         System.out.println(elt);
    11     }
    12 
    13     // 2,下标
    14     for (int i = 0; i < list.size(); i++) {
    15         System.out.println(list.get(i));
    16     }
    17 
    18     // 3,迭代器
    19     for (Iterator<String> iter = list.iterator(); iter.hasNext();) {
    20         String elt = iter.next();
    21         System.out.println(elt);
    22     }
    23 }

    1.2.4遍历Set

     1 public static void main(String[] args) {
     2     // 遍历Set:
     3     Set<String> set = new HashSet<String>();
     4     set.add("dd");
     5     set.add("ee");
     6     set.add("ff");
     7 
     8     // 1,增强的for循环
     9     for (String elt : set) {
    10         System.out.println(elt);
    11     }
    12     
    13     // 2,迭代器
    14     for(Iterator<String> iter = set.iterator(); iter.hasNext() ; ){
    15         String elt = iter.next();
    16         System.out.println(elt);
    17     }
    18 }

    注意:set类型是集合,是无序的,所以没有下标遍历方式

    1.2.5遍历Map

     1 public static void main(String[] args) {
     2     // 遍历Map:
     3     Map<String, String> map = new HashMap<String, String>();
     4     map.put("aa", "xx");
     5     map.put("bb", "yy");
     6     map.put("cc", "zz");
     7 
     8     // 1,增强的for循环(Entry集合)
     9     for (Entry<String, String> entry : map.entrySet()) {
    10         System.out.println(entry);
    11     }
    12     
    13     // 2,增强的for循环(Key集合)
    14     for(String key : map.keySet()){
    15         System.out.println(key + " = " + map.get(key));
    16     }
    17     
    18     // 3,遍历值的集合
    19     for(String value : map.values()){
    20         System.out.println(value);
    21     }
    22 }

     

     

     

     

    ---|Collection: 单列集合

               ---|List: 有存储顺序, 可重复

                  ---|ArrayList:    数组实现, 查找快, 增删慢

                                      由于是数组实现, 在增和删的时候会牵扯到数组

    增容, 以及拷贝元素. 所以慢。数组是可以直接按索引查找, 所以查找时较快

                  ---|LinkedList:   链表实现, 增删快, 查找慢由于链表实现, 增加时只要让前一个元素记住自己就可以, 删除时让前一个元素记住后一个元素, 后一个元素记住前一个元素. 这样的增删效率较高但查询时需要一个一个的遍历, 所以效率较低

                  ---|Vector:   ArrayList原理相同, 但线程安全, 效率略低

     ArrayList实现方式相同, 但考虑了线程安全问题, 所以效率略低

               ---|Set: 无存储顺序, 不可重复

                  ---|HashSet   线程不安全,存取速度快。底层是以哈希表实现的。

           ---|TreeSet   -黑树的数据结构,默认对元素进行自然排

                                    序(String)。如果在比较的时候两个对象

                                    返回值为0,那么元素重复。

    ---| Map: 键值对   键不可重复,键可以重复

           ---|HashMap    线程不安全,存取速度快。底层是以哈希表实现的.

    ---|TreeMap   -黑树的数据结构,默认对元素进行自然排

                    序(String)。如果在比较的时候两个对象

                     返回值为0,那么元素重复

           ---|HashTable  底层也是使用了哈希表维护的,存取的读取快,存储元素是

                             无序的。

  • 相关阅读:
    transition
    Java自增陷阱
    不同编码格式中,字节和字符的关系
    表单重复提交
    source folder和package的区别
    @test 测试案例不能添加参数
    http协议content-type
    jdbc的缺点和mybatis的优点
    ==和equals的区别
    spring IOC和AOP
  • 原文地址:https://www.cnblogs.com/Michael2397/p/5943090.html
Copyright © 2020-2023  润新知