美文网首页Java
java.core.ch01_collection

java.core.ch01_collection

作者: 玄鸟西 | 来源:发表于2020-01-26 15:53 被阅读0次

    java-collection

    1、Iterator

    1.1 代码

    package com.nash.java.core.ch01_collection;
    
    import java.util.ArrayList;
    import java.util.Iterator;
    
    /**
     * 1、迭代器 Iterator
     * 迭代器是用来遍历集合元素的,通过迭代器,可以将遍历与数据分离
     * while(it.hasNext()){
     *          System.out.println(it.next());
     * }
     *
     * 2、Foreach
     * 实现了Iterable接口,即可用Foreach遍历
     * for(String s:set){
     *          System.out.println(s);
     * }
     */
    public class IteratorApp {
    
        public static void main(String[] args) {
            ArrayList<String> list = new ArrayList<String>();
            list.add("a");
            list.add("b");
            list.add("c");
            list.add("d");
    
            // 1、iterator() 遍历,实现了iterator接口
            System.out.print("Iterator 遍历:\t");
            Iterator it = list.iterator();
            while (it.hasNext()) {
                System.out.print(it.next() + " ");
            }
            System.out.println();
    
            // 2、foreach 遍历
            System.out.print("Foreach 遍历:\t");
            for (String li : list){
                System.out.print(li + " ");
            }
        }
    }
    

    1.2 结果

    Iterator 遍历:    a b c d 
    Foreach 遍历: a b c d 
    

    2、ArrayList

    2.1 代码

    package com.nash.java.core.ch01_collection;
    
    import java.util.ArrayList;
    import java.util.Arrays;
    import java.util.Iterator;
    import java.util.List;
    
    /**
     * 数组列表 ArrayList
     * 有序、可重复集合。
     *
     * 容量可以动态增加,底层实现是数组
     * 1、有序
     * 2、元素个数不限
     * 3、元素类型相同、定型
     * 4、可变值
     * 5、可重复
     * 6、查找快、更新慢
     */
    public class ArrayListApp {
    
        public static void main(String[] args) {
            // 初始化、集体赋值
            List<String> list = Arrays.asList("hadoop","hbase","hive");
            ArrayList<String> arrayList = new ArrayList<>(list);
            System.out.println("arrayList:\t" + arrayList.toString());
            System.out.println("equals():\t" + list.equals(arrayList));
            // size() 列表长度
            System.out.println("size():\t" + arrayList.size());
            // isEmpty() 是否为空
            System.out.println("isEmpty():\t" + arrayList.isEmpty());
            // contains() 是否包含
            System.out.println("contains(\"Flink\"):\t" + arrayList.contains("hadoop"));
            // 初始化、逐个赋值
            ArrayList<String> courseList=new ArrayList<>();
            System.out.println("courseList:\t" + courseList);
            // add() 插入
            courseList.add("Java");
            System.out.println("add(\"Java\"):\t" + courseList);
            courseList.add("Python");
            System.out.println("add(\"Python\"):\t" + courseList);
            courseList.add("Scala");
            System.out.println("add(\"Scala\"):\t" + courseList);
            courseList.add(0,"First");
            System.out.println("add(0,\"First\"):\t" + courseList);
            // set() 更新
            courseList.set(0,"Go");
            System.out.println("set(0,\"Go\"):\t" + courseList);
            // get() 查询
            System.out.println("get(3):\t" + courseList.get(2));
            // remove() 删除
            courseList.remove(0);
            System.out.println("remove(0):\t" + courseList);
            courseList.remove("Scala");
            System.out.println("remove(\"Scala\"):\t" + courseList);
            // fori 遍历
            System.out.print("fori():\t");
            for (int i = 0; i < courseList.size(); i++) {
                System.out.print(courseList.get(i) + " ");
            }
            System.out.println();
            // foreach 遍历,实现了iterable接口
            System.out.print("foreach():\t");
            for (String course:courseList){
                System.out.print(course + " ");
            }
            System.out.println();
            // iterator() 遍历,实现了iterator接口
            System.out.print("iterator():\t");
            Iterator<String> courseIterator = courseList.iterator();
            while (courseIterator.hasNext()){
                System.out.print(courseIterator.next() + " ");
            }
            System.out.println();
            // subList(1,2) 子表
            System.out.println("subList(1,2):\t" + courseList.subList(1,2));
        }
    }
    

    2.2 结果

    arrayList:  [hadoop, hbase, hive]
    equals():   true
    size(): 3
    isEmpty():  false
    contains("Flink"):  true
    courseList: []
    add("Java"):    [Java]
    add("Python"):  [Java, Python]
    add("Scala"):   [Java, Python, Scala]
    add(0,"First"): [First, Java, Python, Scala]
    set(0,"Go"):    [Go, Java, Python, Scala]
    get(3): Python
    remove(0):  [Java, Python, Scala]
    remove("Scala"):    [Java, Python]
    fori(): Java Python 
    foreach():  Java Python 
    iterator(): Java Python 
    subList(1,2):   [Python]
    

    3、LinkedList

    3.1 代码

    package com.nash.java.core.ch01_collection;
    
    import java.util.*;
    
    /**
     * 链表 LinkedList
     * 有序、可重复集合。
     *
     * 底层实现是指针、内部类
     * 1、有序
     * 2、元素个数不限
     * 3、元素类型相同、定型
     * 4、可变值
     * 5、可重复
     * 6、查找慢、插入/删除/更新快
     */
    public class LinkedListApp {
    
        public static void main(String[] args) {
            // 初始化、集体赋值
            List<String> list = Arrays.asList("Java","Python","Scala");
            LinkedList<String> linkedList = new LinkedList<>(list);
            System.out.println("linkedList:\t" + linkedList.toString());
            System.out.println("equals():\t" + list.equals(linkedList));
            // size() 列表长度
            System.out.println("size():\t" + linkedList.size());
            // isEmpty() 是否为空
            System.out.println("isEmpty():\t" + linkedList.isEmpty());
            // contains() 是否包含
            System.out.println("contains(\"Java\"):\t" + linkedList.contains("Java"));
            // 初始化、逐个赋值
            LinkedList<String> courseList=new LinkedList<>();
            System.out.println("courseList:\t" + courseList);
            // add() 插入
            courseList.add("Hadoop");
            System.out.println("add(\"Hadoop\"):\t" + courseList);
            courseList.add("HBase");
            System.out.println("add(\"HBase\"):\t" + courseList);
            courseList.add("Hive");
            System.out.println("add(\"Hive\"):\t" + courseList);
            // add(0,"First")
            courseList.add(0,"First");
            System.out.println("add(0,\"First\"):\t" + courseList);
            // addFirst("Spark")
            courseList.addFirst("Spark");
            System.out.println("addFirst(\"Spark\"):\t" + courseList);
            // addLast("Flink")
            courseList.addLast("Flink");
            System.out.println("addLast(\"Flink\"):\t" + courseList);
            // set() 更新
            courseList.set(0,"Hama");
            System.out.println("set(0,\"Hama\"):\t" + courseList);
            // get() 查询
            System.out.println("get(3):\t" + courseList.get(3));
            // remove() 删除
            courseList.remove(0);
            System.out.println("remove(0):\t" + courseList);
            courseList.remove("First");
            System.out.println("remove(\"First\"):\t" + courseList);
            /**
             * poll()
             * 1、数据结构:队列(Queue)
             * 2、方法:出队(Dequeue)
             * 3、方法说明:查看队首元素,并删除该元素
             * 4、类比:remove() 删除
             */
            System.out.println("poll():\t" + courseList.poll());
            System.out.println("courseList:\t" + courseList);
            /**
             * offer()
             * 1、数据结构:队列(Queue)
             * 2、方法:入队(Deque)
             * 3、方法说明:在队尾插入元素
             * 4、类比:add() 插入
             */
            System.out.println("offer():\t" + courseList.offer("Hama"));
            System.out.println("courseList:\t" + courseList);
            /**
             * peek()
             * 1、数据结构:队列(Queue)
             * 2、方法:查队
             * 3、方法说明:查看队首元素,不删除
             * 4、类比:getFirst()
             */
            System.out.println("peek():\t" + courseList.peek());
            System.out.println("courseList:\t" + courseList);
            // element()、getFirst() 查看首元素
            System.out.println("element():\t" + courseList.element());
    
            /**
             * pop()
             * 1、数据结构:堆栈(Stack)
             * 2、方法:出栈
             * 3、方法说明:移除堆栈顶部元素
             * 4、类比:remove() 删除
             */
            System.out.println("pop():\t" + courseList.pop());
            System.out.println("courseList:\t" + courseList);
            /**
             * push()
             * 1、数据结构:堆栈(Stack)
             * 2、方法:入栈(Dequeue)
             * 3、方法说明:把元素压入堆栈顶部
             * 4、类比:addFirst() 在顶部插入元素
             */
            courseList.push("Samza");
            System.out.println("push():\t" + courseList);
    
            // fori 遍历
            System.out.print("fori():\t");
            for (int i = 0; i < courseList.size(); i++) {
                System.out.print(courseList.get(i) + " ");
            }
            System.out.println();
            // foreach 遍历,实现了iterable接口
            System.out.print("foreach():\t");
            for (String course:courseList){
                System.out.print(course + " ");
            }
            System.out.println();
            // iterator() 遍历,实现了iterator接口
            System.out.print("iterator():\t");
            Iterator<String> courseIterator = courseList.iterator();
            while (courseIterator.hasNext()){
                System.out.print(courseIterator.next() + " ");
            }
            System.out.println();
            // subList(1,2) 子表
            System.out.println("subList(1,2):\t" + courseList.subList(1,2));
    
        }
    }
    

    3.2 结果

    linkedList: [Java, Python, Scala]
    equals():   true
    size(): 3
    isEmpty():  false
    contains("Java"):   true
    courseList: []
    add("Hadoop"):  [Hadoop]
    add("HBase"):   [Hadoop, HBase]
    add("Hive"):    [Hadoop, HBase, Hive]
    add(0,"First"): [First, Hadoop, HBase, Hive]
    addFirst("Spark"):  [Spark, First, Hadoop, HBase, Hive]
    addLast("Flink"):   [Spark, First, Hadoop, HBase, Hive, Flink]
    set(0,"Hama"):  [Hama, First, Hadoop, HBase, Hive, Flink]
    get(3): HBase
    remove(0):  [First, Hadoop, HBase, Hive, Flink]
    remove("First"):    [Hadoop, HBase, Hive, Flink]
    poll(): Hadoop
    courseList: [HBase, Hive, Flink]
    offer():    true
    courseList: [HBase, Hive, Flink, Hama]
    peek(): HBase
    courseList: [HBase, Hive, Flink, Hama]
    element():  HBase
    pop():  HBase
    courseList: [Hive, Flink, Hama]
    push(): [Samza, Hive, Flink, Hama]
    fori(): Samza Hive Flink Hama 
    foreach():  Samza Hive Flink Hama 
    iterator(): Samza Hive Flink Hama 
    subList(1,2):   [Hive]
    

    4、HashSet

    4.1 代码

    package com.nash.java.core.ch01_collection;
    
    import java.util.HashSet;
    import java.util.Iterator;
    
    /**
     * 集合实现类 HashSet
     * 无序、不可重复集合。
     *
     * 通过散列机制将信息存储到哈希表
     * 当程序向HashSet集合添加元素时,HashSet会根据该元素的HashCode值,计算它在内存的存储位置,这样可以快速定位该元素。
     * 1、无序
     * 2、元素个数不限
     * 3、元素类型相同、定型
     * 4、可变值
     * 5、不可重复
     * 6、查找慢、插入/删除/更新快
     */
    public class HashSetApp {
    
        public static void main(String[] args) {
            // 初始化、逐个赋值
            HashSet<String> courseSet=new HashSet<>();
            System.out.println("courseSet:\t" + courseSet);
            // size() 列表长度
            System.out.println("size():\t" + courseSet.size());
            // isEmpty() 是否为空
            System.out.println("isEmpty():\t" + courseSet.isEmpty());
            // contains() 是否包含
            System.out.println("contains(\"Java\"):\t" + courseSet.contains("Java"));
            // add() 插入
            courseSet.add("Java");
            System.out.println("add(\"Java\"):\t" + courseSet);
            courseSet.add("Python");
            System.out.println("add(\"Python\"):\t" + courseSet);
            courseSet.add("Scala");
            System.out.println("add(\"Scala\"):\t" + courseSet);
            courseSet.add("Scala");
            System.out.println("add(\"Scala\"):\t" + courseSet);
            // remove() 删除
            courseSet.remove("Scala");
            System.out.println("remove(\"Scala\"):\t" + courseSet);
            // foreach 遍历,实现了iterable接口
            System.out.print("foreach():\t");
            for (String course:courseSet){
                System.out.print(course + " ");
            }
            System.out.println();
            // iterator() 遍历,实现了iterator接口
            System.out.print("iterator():\t");
            Iterator<String> courseIterator = courseSet.iterator();
            while (courseIterator.hasNext()){
                System.out.print(courseIterator.next() + " ");
            }
            System.out.println();
    
        }
    }
    

    4.2 结果

    courseSet:  []
    size(): 0
    isEmpty():  true
    contains("Java"):   false
    add("Java"):    [Java]
    add("Python"):  [Java, Python]
    add("Scala"):   [Java, Scala, Python]
    add("Scala"):   [Java, Scala, Python]
    remove("Scala"):    [Java, Python]
    foreach():  Java Python 
    iterator(): Java Python 
    

    5、TreeSet

    5.1 代码

    package com.nash.java.core.ch01_collection;
    
    import java.util.Iterator;
    import java.util.TreeSet;
    
    /**
     * 集合实现类 TreeSet
     * 有序、不可重复集合。
     *
     * 采用红黑树的数据结构存储集合元素。
     *
     * 当程序向TreeSet集合添加元素时,TreeSet会根据该元素的HashCode值,计算它在内存的存储位置,这样可以快速定位该元素。
     * 1、有序
     * 2、元素个数不限
     * 3、元素类型相同、定型
     * 4、可变值
     * 5、不可重复
     * 6、查找慢、插入/删除/更新快
     */
    public class TreeSetApp {
        public static void main(String[] args) {
            // 初始化、逐个赋值
            TreeSet<String> courseSet=new TreeSet<>();
            System.out.println("courseSet:\t" + courseSet);
            // size() 列表长度
            System.out.println("size():\t" + courseSet.size());
            // isEmpty() 是否为空
            System.out.println("isEmpty():\t" + courseSet.isEmpty());
            // contains() 是否包含
            System.out.println("contains(\"Java\"):\t" + courseSet.contains("Java"));
            // add() 插入
            courseSet.add("Java");
            System.out.println("add(\"Java\"):\t" + courseSet);
            courseSet.add("Python");
            System.out.println("add(\"Python\"):\t" + courseSet);
            courseSet.add("Scala");
            System.out.println("add(\"Scala\"):\t" + courseSet);
            courseSet.add("Go");
            System.out.println("add(\"Go\"):\t" + courseSet);
            courseSet.add("PHP");
            System.out.println("add(\"PHP\"):\t" + courseSet);
            // remove() 删除
            courseSet.remove("Scala");
            System.out.println("remove(\"Scala\"):\t" + courseSet);
            // descendingSet() 倒序
            System.out.println("descendingSet():\t" + courseSet.descendingSet());
            System.out.println("courseSet:\t" + courseSet);
            // first() 查看首个元素
            System.out.println("first():\t" + courseSet.first());
            // last() 查看末尾元素
            System.out.println("last():\t" + courseSet.last());
            // foreach 遍历,实现了iterable接口
            System.out.print("foreach():\t");
            for (String course:courseSet){
                System.out.print(course + " ");
            }
            System.out.println();
            // iterator() 遍历,实现了iterator接口
            System.out.print("iterator():\t");
            Iterator<String> courseIterator = courseSet.iterator();
            while (courseIterator.hasNext()){
                System.out.print(courseIterator.next() + " ");
            }
            System.out.println();
        }
    }
    

    5.2 结果

    courseSet:  []
    size(): 0
    isEmpty():  true
    contains("Java"):   false
    add("Java"):    [Java]
    add("Python"):  [Java, Python]
    add("Scala"):   [Java, Python, Scala]
    add("Go"):  [Go, Java, Python, Scala]
    add("PHP"): [Go, Java, PHP, Python, Scala]
    remove("Scala"):    [Go, Java, PHP, Python]
    descendingSet():    [Python, PHP, Java, Go]
    courseSet:  [Go, Java, PHP, Python]
    first():    Go
    last(): Python
    foreach():  Go Java PHP Python 
    iterator(): Go Java PHP Python 
    

    6、HashMap

    6.1 代码

    package com.nash.java.core.ch01_collection;
    
    import java.util.Collection;
    import java.util.HashMap;
    import java.util.Iterator;
    import java.util.Set;
    
    /**
     * 映射、关联数组 HashMap
     * 无序、key不可重复、具有映射关系的集合。
     *
     * 1、Map中的key不可重复。
     */
    public class HashMapApp {
    
        public static void main(String[] args) {
            // 初始化、逐个赋值
            HashMap<Integer,String> courseMap= new HashMap<Integer,String>();
            // size() 列表长度
            System.out.println("size():\t" + courseMap.size());
            // isEmpty() 是否为空
            System.out.println("isEmpty():\t" + courseMap.isEmpty());
            System.out.println("courseMap:\t" + courseMap);
            // put() 插入
            courseMap.put(101,"Java");
            System.out.println("put(101,\"Java\"):\t" + courseMap);
            courseMap.put(102,"Python");
            System.out.println("put(102,\"Python\"):\t" + courseMap);
            courseMap.put(103,"Scala");
            System.out.println("put(103,\"Scala\"):\t" + courseMap);
            courseMap.put(104,"Go");
            System.out.println("put(104,\"Go\"):\t" + courseMap);
            courseMap.put(105,"PHP");
            System.out.println("put(105,\"PHP\"):\t" + courseMap);
            // keySet() 查看key组成的集合
            System.out.println("keySet():\t" + courseMap.keySet());
            // values() 查看value组成的集合
            System.out.println("values():\t" + courseMap.values());
            // entrySet() 查看 key=value 组成的集合
            System.out.println("entrySet():\t" + courseMap.entrySet());
            // get() 根据key查询value
            System.out.println("get(101):\t" + courseMap.get(101));
            // remove() 删除
            System.out.println("remove(101):\t" + courseMap.remove(101));
            System.out.println("courseMap:\t" + courseMap);
            // containsKey() 是否包含指定key
            System.out.println("containsKey(102):\t" + courseMap.containsKey(102));
            // containsValue() 是否包含指定value
            System.out.println("containsValue(\"Python\"):\t" + courseMap.containsValue("Python"));
    
            // iterator遍历key
            Set<Integer> keys = courseMap.keySet();
            System.out.print("iterator遍历key:\t");
            Iterator<Integer> keyIterator = keys.iterator();
            while (keyIterator.hasNext()){
                System.out.print(keyIterator.next() + " ");
            }
            System.out.println();
            // iterator遍历key
            Collection<String> values = courseMap.values();
            System.out.print("iterator遍历values:\t");
            Iterator<String> valueIterator = values.iterator();
            while (valueIterator.hasNext()){
                System.out.print(valueIterator.next() + " ");
            }
            System.out.println();
            // foreach遍历key、value
            System.out.print("foreach遍历key、value:\t");
            for (Integer key:keys){
                System.out.print(key + "=" + courseMap.get(key) + " ");
            }
    
        }
    }
    

    6.2 结果

    size(): 0
    isEmpty():  true
    courseMap:  {}
    put(101,"Java"):    {101=Java}
    put(102,"Python"):  {101=Java, 102=Python}
    put(103,"Scala"):   {101=Java, 102=Python, 103=Scala}
    put(104,"Go"):  {101=Java, 102=Python, 103=Scala, 104=Go}
    put(105,"PHP"): {101=Java, 102=Python, 103=Scala, 104=Go, 105=PHP}
    keySet():   [101, 102, 103, 104, 105]
    values():   [Java, Python, Scala, Go, PHP]
    entrySet(): [101=Java, 102=Python, 103=Scala, 104=Go, 105=PHP]
    get(101):   Java
    remove(101):    Java
    courseMap:  {102=Python, 103=Scala, 104=Go, 105=PHP}
    containsKey(102):   true
    containsValue("Python"):    true
    iterator遍历key:  102 103 104 105 
    iterator遍历values:   Python Scala Go PHP 
    foreach遍历key、value: 102=Python 103=Scala 104=Go 105=PHP 
    

    7、TreeMap

    7.1 代码

    package com.nash.java.core.ch01_collection;
    
    import java.util.*;
    
    /**
     * 映射、关联数组 TreeMap
     * key有序、key不可重复、具有映射关系的集合。
     *
     * 1、Map中的key不可重复。
     */
    public class TreeMapApp {
    
        public static void main(String[] args) {
            // 初始化、逐个赋值
            TreeMap<Integer,String> courseMap= new TreeMap<Integer,String>();
            // size() 列表长度
            System.out.println("size():\t" + courseMap.size());
            // isEmpty() 是否为空
            System.out.println("isEmpty():\t" + courseMap.isEmpty());
            System.out.println("courseMap:\t" + courseMap);
            // put() 插入
            courseMap.put(101,"Java");
            System.out.println("put(101,\"Java\"):\t" + courseMap);
            courseMap.put(102,"Python");
            System.out.println("put(102,\"Python\"):\t" + courseMap);
            courseMap.put(103,"Scala");
            System.out.println("put(103,\"Scala\"):\t" + courseMap);
            courseMap.put(104,"Go");
            System.out.println("put(104,\"Go\"):\t" + courseMap);
            courseMap.put(105,"PHP");
            System.out.println("put(105,\"PHP\"):\t" + courseMap);
    
            // descendingMap() 倒序
            System.out.println("descendingMap():\t" + courseMap.descendingMap());
            // descendingKeySet() 倒序查看key组成的集合
            System.out.println("descendingKeySet():\t" + courseMap.descendingKeySet());
            // headMap() 倒序查看key组成的集合
    
            // keySet() 查看key组成的集合
            System.out.println("keySet():\t" + courseMap.keySet());
            // values() 查看value组成的集合
            System.out.println("values():\t" + courseMap.values());
            // entrySet() 查看 key=value 组成的集合
            System.out.println("entrySet():\t" + courseMap.entrySet());
            // get() 根据key查询value
            System.out.println("get(101):\t" + courseMap.get(101));
            // remove() 删除
            System.out.println("remove(101):\t" + courseMap.remove(101));
            System.out.println("courseMap:\t" + courseMap);
            // containsKey() 是否包含指定key
            System.out.println("containsKey(102):\t" + courseMap.containsKey(102));
            // containsValue() 是否包含指定value
            System.out.println("containsValue(\"Python\"):\t" + courseMap.containsValue("Python"));
    
            // iterator遍历key
            Set<Integer> keys = courseMap.keySet();
            System.out.print("iterator遍历key:\t");
            Iterator<Integer> keyIterator = keys.iterator();
            while (keyIterator.hasNext()){
                System.out.print(keyIterator.next() + " ");
            }
            System.out.println();
            // iterator遍历key
            Collection<String> values = courseMap.values();
            System.out.print("iterator遍历values:\t");
            Iterator<String> valueIterator = values.iterator();
            while (valueIterator.hasNext()){
                System.out.print(valueIterator.next() + " ");
            }
            System.out.println();
            // foreach遍历key、value
            System.out.print("foreach遍历key、value:\t");
            for (Integer key:keys){
                System.out.print(key + "=" + courseMap.get(key) + " ");
            }
        }
    }
    

    7.2 结果

    size(): 0
    isEmpty():  true
    courseMap:  {}
    put(101,"Java"):    {101=Java}
    put(102,"Python"):  {101=Java, 102=Python}
    put(103,"Scala"):   {101=Java, 102=Python, 103=Scala}
    put(104,"Go"):  {101=Java, 102=Python, 103=Scala, 104=Go}
    put(105,"PHP"): {101=Java, 102=Python, 103=Scala, 104=Go, 105=PHP}
    descendingMap():    {105=PHP, 104=Go, 103=Scala, 102=Python, 101=Java}
    descendingKeySet(): [105, 104, 103, 102, 101]
    keySet():   [101, 102, 103, 104, 105]
    values():   [Java, Python, Scala, Go, PHP]
    entrySet(): [101=Java, 102=Python, 103=Scala, 104=Go, 105=PHP]
    get(101):   Java
    remove(101):    Java
    courseMap:  {102=Python, 103=Scala, 104=Go, 105=PHP}
    containsKey(102):   true
    containsValue("Python"):    true
    iterator遍历key:  102 103 104 105 
    iterator遍历values:   Python Scala Go PHP 
    foreach遍历key、value: 102=Python 103=Scala 104=Go 105=PHP 
    

    相关文章

      网友评论

        本文标题:java.core.ch01_collection

        本文链接:https://www.haomeiwen.com/subject/lhbjthtx.html