一周学完Java基础,第六天,常见容器

(1) 列表List 

        接口:
        java.util.List<>
        实现方式:
        java.util.ArrayList<> : 变长数组
        java.util.LinkedList<> : 双链表
        函数:
        add() : 在末尾添加一个元素
        clear():清空
        size():返回长度
        isEmpty():是否为空
        get(i) : 获取第i个元素
        set(i,val) : 将第i个元素设置为val

    //  List<Integer> list = new ArrayLsit<>();
        List<Integer> list = new LinkedList<>();
        
        list.add(1); //[1]
        list.add(2); //[1, 2]
        list.clear(); //[]
        list.add(1); 
        list.add(2); 
        list.size(); // 2
        list.isEmpty(); //false
        list.get(1); // 2
        list.set(1,4); 
        //list.set(3,4); 报错 必须先add再set

 

 (2) 栈 Stack

        类:
        java.util.Stack<>
        函数:
        push() : 压入元素
        pop() : 弹出栈顶元素,并返回栈顶元素
        peek() : 返回栈顶元素
        size() : 返回长度
        empty() : 栈是否为空
        clear() : 清空

            Stack<Integer> stk = new Stack<>();
            stk.push(1);
            stk.push(2);
            stk.pop(); // 2
            stk.peek();// 1
            stk.size();// 1
            stk.empty(); // false
            stk.clear();
            System.out.println(stk.size());

(3) 队列  Queue

        类:
        java.util.LinkedList<> 双链表
        java.util.PriorityQueue<> 优先队列,小根堆
        java.util.PriorityQueue<>(Collection.reverseOrder) 大根堆
        函数:
        add() : 队尾添加元素
        remove() : 删除并返回队头
        isEmpty() : 是否为空
        size() : 返回长度
        peek() : 返回队头
        clear() : 清空

       Queue<Integer> q= new PriorityQueue();//小根堆
       q.add(2);
       q.add(1);
       q.add(10);
       System.out.println(q.peek()); //1  由于是小根堆,所以顶部是最小值
       q.remove();
       System.out.println(q.peek()); //2  
       
       Queue<Integer> Bq = new PriorityQueue(Collections.reverseOrder());//大根堆
       Bq.add(2);
       Bq.add(1);
       Bq.add(10);
       System.out.println(Bq.peek()); //10

(4) 集合  Set

        接口:
        java.util.Set<K>
        实现:
        java.util.HashSet<K> : 哈希表
        java.util.TreeSet<K> : 平衡树
        函数:
        add() : 添加元素
        contains() : 是否包含某个元素
        remove() : 删除元素
        size() : 返回元素数
        isEmpty() : 是否为空
        clear() : 清空
        
        java.util.TreeSet的函数:
        ceiling(key):返回大于等于key的最小元素,不存在则返回null
        floor(key):返回小于等于key的最大元素,不存在则返回null

    Set<Integer> set = new HashSet<>(); //哈希表,顺序是随机的
       set.add(1);
       set.add(2);
       set.add(10);
       set.contains(2); //true
       set.remove(2);
       set.contains(2); //false
       for(int x : set)  System.out.println(x); //遍历Set
    TreeSet<Integer> setTree = new TreeSet<>(); //平衡树,顺序是有序的
       setTree.add(1);
       setTree.add(2);
       setTree.add(10);
       System.out.println(setTree.ceiling(5)); // 10
       System.out.println(setTree.floor(5)); // 2   

(5) 图  Map

        接口:
        java.util.Map<K,V>
        实现:
        java.util.HashMap<K,V> : 哈希表
        java.util.TreeMap<K,V> : 平衡树
        函数:
        put(key,value) : 添加关键字与其对应值
        get(key) : 返回关键字对应的值
        containsKey(key) : 是否包含关键字
        remove(key) : 删除关键字
        size() : 返回元素数
        isEmpty() : 是否为空
        clear() : 清空
        entrySet() : 获取Map中所有对象的集合
        
        Map.Entry<K,V> : Map中的对象类型
            getKey() : 获取关键字
            getValue() : 获取值
    
        java.util.TreeMap<K,V>的函数:
        ceilingEntry(key):返回大于等于key的最小元素,不存在则返回null
        floorEntry(key):返回小于等于key的最大元素,不存在则返回null

    Map<String,Integer> map = new HashMap<>(); //哈希表 无序
        map.put("123",2);
        map.put("321",3);
        map.put("21",10);
        map.get(123); //null
        map.get("123"); //2
        map.containsKey("123"); //true
        map.remove("123");
        map.containsKey("123"); //false
        
        for(Map.Entry<String,Integer> entry:map.entrySet())
            System.out.printf("%s %d\n",entry.getKey(),entry.getValue());
        //321 3
        //21 10
        
     TreeMap<String,Integer> map = new TreeMap<>(); //平衡树 有序
        map.put("123",2);
        map.put("321",3);
        map.put("21",10);
    
        
        for(Map.Entry<String,Integer> entry:map.entrySet())
            System.out.printf("%s %d\n",entry.getKey(),entry.getValue());
        //    123 2
        //    21 10
        //    321 3
        由于TreeMap的key为String类,其比较大小是通过字典序。所以是123>21>321
        
        TreeMap<Integer,Integer> Newmap = new TreeMap<>(); 
        Newmap.put(123,2);
        Newmap.put(321,3);
        Newmap.put(21,10);
        
        Map.Entry<Integer,Integer> up = Newmap.ceilingEntry(124);
        System.out.println(up);               //321=3
        System.out.println(up.getKey());      //321
        System.out.println(up.getValue());    //3

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值