1、Stack
public class Main {
static Stack<Integer> stack = new Stack<Integer>();
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
// 進棧
stack.push(1);
stack.push(2);
stack.push(3);
// 取棧頂元素(不出棧)
System.out.println(stack.peek());
// 出棧
stack.pop();
System.out.println(stack.peek());
// 判斷棧是否爲空
if(stack.empty() == true) {
System.out.println("爲空");
} else {
System.out.println("不爲空");
}
// 查看棧的大小
System.out.println(stack.size());
// 查看是否包含某個元素
System.out.println(stack.contains(5));
// 清空棧
stack.clear();
}
}
2、Queue
public class Main {
static Queue<Integer> queue = new LinkedList<Integer>();
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
// 入隊
queue.add(1);
queue.add(2);
queue.offer(3);
queue.offer(4);
// 取隊首元素(不出隊)
System.out.println(queue.peek());
System.out.println(queue.element());
// 彈出隊首元素
queue.remove();
queue.poll();
System.out.println(queue.peek());
// 判斷隊列是否爲空
if(queue.isEmpty() == true) {
System.out.println("爲空");
} else {
System.out.println("不爲空");
}
// 查看隊列大小
System.out.println(queue.size());
// 查看是否包含某個元素
System.out.println(queue.contains(5));
// 清空隊列
queue.clear();
}
}
3、Map
public class Main {
static Map<String, Integer> mp = new HashMap<String, Integer>();
// static Map<String, Integer> mp2 = new TreeMap<String, Integer>();
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
// 添加元素
mp.put("abc", 1);
mp.put("def", 3);
// 替換元素
mp.replace("abc", 10);
System.out.println(mp.get("abc"));
// 刪除元素
mp.remove("abc");
// 查詢元素
System.out.println(mp.get("def"));
System.out.println(mp.get("ghi")); // null
// 查看Map大小
System.out.println(mp.size());
// 查看是否包含某個鍵
System.out.println(mp.containsKey("def"));
// 查看是否包含某個值
System.out.println(mp.containsValue("2"));
// 判斷是否爲空
System.out.println(mp.isEmpty());
// 遍歷Map
// 1
for(Map.Entry<String, Integer> tmp : mp.entrySet())
System.out.println("key: " + tmp.getKey() + ", value: " + tmp.getValue());
// 2
for(String key : mp.keySet())
System.out.println("key: " + key);
for(Integer value : mp.values())
System.out.println("value: " + value);
}
}
4、ArrayList
(1)添加、刪除、獲取元素,判斷是否含有某個元素,判斷是否爲空。
public class Main {
static List<String> list = new ArrayList<String>();
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
// 添加元素
list.add("Tom");
list.add("Mike");
list.add("Jerry");
list.add("Alice");
list.add("Bob");
// 刪除元素
list.remove(0); // 根據索引刪除
list.remove("Mike"); // 根據內容刪除
// 獲取元素
System.out.println(list.get(0));
// 判斷是否含有某個元素
System.out.println(list.contains("ob")); // 有:true;沒有:false
// 判斷是否爲空,空:true,非空:false
System.out.println(list.isEmpty());
}
}
(2)插入或改變某個元素。
public class Main {
static List<String> list = new ArrayList<String>();
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
// 添加元素
list.add("Tom");
list.add("Mike");
list.add("Jerry");
list.add("Alice");
list.add("Bob");
// set(index, element)起到替換作用
list.set(0, "tom");
// add(index, element)放到原來index位置,之前index及後的元素往後移一位
list.add(1, "mike");
for(String string : list) {
System.out.println(string);
}
}
}
(3)查看某個元素的索引,indexOf()查看第一次出現的位置,lastindexOf()查看最後一次出現的位置,不存在某個元素時,都返回-1。
public class Main {
static List<String> list = new ArrayList<String>();
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
// 添加元素
list.add("Tom");
list.add("Mike");
list.add("Tom");
list.add("Alice");
list.add("Tom");
list.add("Bob");
// indexOf
System.out.println(list.indexOf("Tom"));
// lastindexOf
System.out.println(list.lastIndexOf("Tom"));
}
}
(4)生成子list,比較兩個list是否相等,去重。
public class Main {
static List<String> list = new ArrayList<String>();
static List<String> list2 = new ArrayList<String>();
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
// 添加元素
list.add("Tom");
list.add("Mike");
list.add("Tom");
list.add("Alice");
list.add("Tom");
list.add("Bob");
// 生成子list
list2 = list.subList(1, 4); // 從索引1開始,到索引4之前,即不包括索引4
for(String string : list2) {
System.out.println(string);
}
// 比較兩個list是否相等
if(list.equals(list2)) {
System.out.println("same!");
} else {
System.out.println("not same!");
}
// 去重
// 方法1
for(int i = 0; i < list.size() - 1; i++) {
for(int j = i + 1; j < list.size(); j++) {
if(list.get(j).equals(list.get(i))) {
list.remove(j);
}
}
}
System.out.println(list);
// 方法2
List<String> list2 = new ArrayList<String>();
for(String string : list) {
if(Collections.frequency(list2, string) < 1) {
list2.add(string);
}
}
System.out.println(list2);
}
}
5、LinkedList
(1)添加、獲取元素,生成子鏈表。
public class Main {
static LinkedList<String> list = new LinkedList<String>();
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
// 添加元素
list.add("Tom");
list.add("jerry");
list.add("Mike");
list.add("Alice");
list.add("Bob");
list.addFirst("aa"); // 在最前面添加"aa"
list.addLast("cc"); // 在最後添加"cc"
list.add(1, "hh"); // 添加在指定位置
System.out.println(list);
// 獲取第一個和最後一個元素
System.out.println(list.getFirst());
System.out.println(list.getLast());
// 遍歷所有元素
for(String string : list) {
System.out.println(string);
}
// 生成子鏈表,從1開始,到4之前,即不包括4
List list2 = list.subList(1, 4);
System.out.println(list2);
}
}
(2)刪除元素。
public class Main {
static LinkedList<String> list = new LinkedList<String>();
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
// 添加元素
list.add("Tom");
list.add("jerry");
list.add("Mike");
list.add("Alice");
list.add("Bob");
list.add("Sarah");
list.addFirst("aa");
list.addLast("cc");
// 刪除元素
list.removeFirst(); // 刪除子一個元素
System.out.println(list);
list.removeLast(); // 刪除最後一個元素
System.out.println(list);
list.subList(1, 4).clear(); // 根據範圍刪除,刪除1--3
System.out.println(list);
list.remove("Tom"); // 刪除元素"Tom"
System.out.println(list);
list.remove(1); // 刪除在位置1上的元素
System.out.println(list);
list.clear(); // 清空
}
}
(3)轉換爲ArrayList和數組。
public class Main {
static LinkedList<String> list = new LinkedList<String>();
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
// 添加元素
list.add("Tom");
list.add("jerry");
list.add("Mike");
list.add("Alice");
list.add("Bob");
list.add("Sarah");
// 轉換爲ArrayList
ArrayList<String> list2 = new ArrayList<String>(list);
for(String string : list2) {
System.out.println(string);
}
// 轉換爲數組
String a[] = list.toArray(new String[list.size()]);
for(int i = 0; i < a.length; i++) {
System.out.println(a[i]);
}
}
}
(4)查找和替換元素。
public class Main {
static LinkedList<String> list = new LinkedList<String>();
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
// 添加元素
list.add("Tom");
list.add("jerry");
list.add("Tom");
list.add("Alice");
list.add("Bob");
list.add("Tom");
// 查找元素
System.out.println(list.indexOf("Tom"));
System.out.println(list.lastIndexOf("Tom"));
// 替換元素
list.set(3, "Replaced");
System.out.println(list);
}
}
6、set
public class Main {
static Set<Integer> set = new HashSet<Integer>();
// static Set<Integer> set2 = new TreeSet<Integer>();
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
// 添加元素
set.add(1);
set.add(2);
set.add(3);
set.add(4);
set.add(5);
// 判斷是否包含某個元素
System.out.println(set.contains(3));
// 判斷集合是否爲空
System.out.println(set.isEmpty());
set.remove(3);
System.out.println(set);
// 查看集合大小
System.out.println(set.size());
// 清空集合
set.clear();
}
}
7、優先隊列
class student {
int age;
String name;
public student(int age, String name) {
this.age = age;
this.name = name;
}
}
public class Main {
// 自定義排序方法
static Comparator<student> cmp = new Comparator<student>() {
public int compare(student A, student B) {
if(A.age != B.age) return B.age - A.age; // 從大到小
return A.name.compareTo(B.name); // 按字典序
}
};
static PriorityQueue<student> queue = new PriorityQueue<student>(cmp); // 定義優先隊列
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
queue.add(new student(10, "Tom"));
queue.add(new student(30, "Jerry"));
queue.add(new student(15, "Mike"));
queue.add(new student(10, "Alice"));
queue.add(new student(15, "Bob"));
while(queue.isEmpty() == false) {
System.out.println(queue.peek().age + " " + queue.peek().name);
queue.poll();
}
}
}