Java常用容器及使用方法(List、Stack、Queue、Set、Map)

List

接口:java.util.List<>。

实现:
java.util.ArrayList<>:变长数组
java.util.LinkedList<>:双链表

函数:
add():在末尾添加一个元素
clear():清空
size():返回长度
isEmpty():是否为空
get(i):获取第i个元素
set(i, val):将第i个元素设置为val

下面是各种用法的举例:

import java.util.*;
public class STL_List {
    public static void main(String[] args) {
        ArrayList<Integer> list_1 = new ArrayList<>();
        LinkedList<Integer> list_2 = new LinkedList<>();
        list_1.add(1);
        list_1.add(2);
        list_1.add(3);
        list_1.add(4);

        list_2.add(5);
        list_2.add(6);
        list_2.add(7);
        list_2.add(8);
        list_2.add(9);
        list_2.add(10);
        System.out.println("List_1: " + list_1);
        System.out.println("List_2: " + list_2);

        System.out.println("List_1 size: " + list_1.size());//返回list_1的长度
        System.out.println("List_2 size: " + list_2.size());//返回list_2的长度
        System.out.println("List_1 is empty: " + list_1.isEmpty());//判断list_1是否为空
        System.out.println("List_2 is empty: " + list_2.isEmpty());//判断list_2是否为空

        System.out .println(list_1.get(2));//返回list_1中索引为2的元素
        System.out .println(list_2.get(2));//返回list_2中索引为2的元素

        list_1.set(2, 100);//修改list_1中索引为2的元素为100
        System.out.println(list_1.get(2));
    }
}

类:java.util.Stack<>

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

下面是栈的各种用法的举例:

import java.util.*;
public class STL_Stack {
    public static void main(String[] args) {
        Stack<Integer> stack = new Stack<>();
        stack.push(1);
        stack.push(2);
        stack.push(3);
        stack.push(4);//压入元素
        System.out.println(stack.peek());//查看栈顶元素
        int t = stack.pop();//弹出栈顶元素,并且返回弹出的元素
        System.out.println(t);

        System.out.println(stack.size());//返回栈的长度
        System.out.println(stack.isEmpty());//判断栈是否为空
        stack.clear();//清空栈
        System.out.println(stack.isEmpty());

    }
}

队列

接口:java.util.Queue<>

实现:

java.util.LinkedList<>:双链表
java.util.PriorityQueue<>:优先队列
默认是小根堆,大根堆写法:new PriorityQueue<>(Collections.reverseOrder())

函数:

add():在队尾添加元素
remove():删除并返回队头
isEmpty():是否为空
size():返回长度
peek():返回队头
clear():清空

下面是队列各函数的用法:

import java.util.*;

public class STL_Queue {
    public static void main(String[] args) {
        Queue<Integer> queue_1 = new LinkedList<>();
        Queue<Integer> queue_2 = new PriorityQueue<>();//默认小顶堆

        for (int i = 10; i > 0; i--) {
            queue_1.add(i);
            queue_2.add(i);
        }//在队列中添加元素
        System.out.println("Queue_1: " + queue_1);
        System.out.println("Queue_2: " + queue_2);

        System.out.println("Queue_1 size: " + queue_1.size());//返回队列的长度
        System.out.println("Queue_2 size: " + queue_2.size());//返回队列的长度
        System.out.println("Queue_1 is empty: " + queue_1.isEmpty());//判断队列是否为空
        System.out.println("Queue_2 is empty: " + queue_2.isEmpty());//判断队列是否为空
        System.out.println("Queue_1 peek: " + queue_1.peek());//返回队列的第一个元素,但不删除
        System.out.println("Queue_2 peek: " + queue_2.peek());//返回队最小的元素,但不删除

        queue_1.remove();//删除队列的第一个元素
        queue_2.remove();//删除队列的第一个元素
    }
}

Set

接口:java.util.Set

实现:

  • java.util.HashSet:哈希表
  • java.util.TreeSet:平衡树

函数:
add():添加元素
contains():是否包含某个元素
remove():删除元素
size():返回元素数
isEmpty():是否为空
clear():清空

java.util.TreeSet多的函数:
ceiling(key):返回大于等于key的最小元素,不存在则返回null
floor(key):返回小于等于key的最大元素,不存在则返回null

下面是set的各种函数的用法:

import java.util.*;
public class STL_Set {
    public static void main(String[] args) {
        Set<Integer> set1 = new HashSet<>();
        Set<Integer> set2 = new TreeSet<>();

        for (int i = 1; i <= 10 ; i++) {
            set1.add(i);
            set2.add(i);
        }

        System.out.println("set1: " + set1);
        System.out.println("set2: " + set2);

        System.out.println(set1.contains(3));//判断元素3是否在集合中
        System.out.println(set2.contains(3));//判断元素3是否在集合中
        set1.remove(3);//删除元素3
        set2.remove(3);//删除元素3
        System.out.println("set1: " + set1);
        System.out.println("set2: " + set2);
        System.out.println(set1.size());//返回集合中元素的个数
        System.out.println(set2.size());//返回集合中元素的个数

        Integer floor = ((TreeSet<Integer>) set2).floor(3);//返回小于等于3的最大元素
        Integer ceiling = ((TreeSet<Integer>) set2).ceiling(3);//返回大于等于3的最小元素
        System.out.println(floor);
        System.out.println(ceiling);

        set1.clear();//清空集合
        set2.clear();//清空集合
        System.out.println("set1: " + set1);
        System.out.println("set2: " + set2);

    }
}

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的各种函数的用法:

package foundational;
import java.util.*;
public class STL_Map {
    public static void main(String[] args) {
        Map<String, Integer> map1 = new HashMap<>();
        Map<String, Integer> map2 = new TreeMap<>();

        map1.put("a", 1);
        map1.put("b", 2);
        map1.put("c", 3);

        map2.put("a", 1);
        map2.put("b", 2);
        map2.put("c", 3);

        System.out.println("Map1: " + map1);
        System.out.println("Map2: " + map2);

        System.out.println(map1.get("a"));//返回map1中键为"a"的值
        System.out.println(map2.get("b"));//返回map2中键为"b"的值

        System.out.println(map1.containsKey("a"));//判断map1中是否存在键为"d"的元素
        System.out.println(map2.containsKey("e"));//判断map2中是否存在键为"e"的元素
        map1.remove("a");//删除map1中键为"a"的元素
        System.out.println(map1);
        map1.clear();//清空map2
        System.out.println(map1);

        System.out.println(map2.size());//返回map2的长度
        System.out.println(map2.isEmpty());//判断map2是否为空
        System.out.println(map2.keySet());//返回map2的所有键
        System.out.println(map2.values());//返回map2的所有值
        System.out.println(map2.entrySet());//返回map2的所有键值对
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值