15屆藍橋杯備賽
java語法
基礎IO框架
import java.util.*;
import java.IO.IOException;
import java.IO.BufferedReader;
public class Main{
public static void main(String[] args)throws IOException{
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
String[] inputStrs = reader.raedLine().split(" ");
//Scanner scanner = new Scanner(System.in);
//String[] inputStrs = scanner.nextLine().split(" ");
return;
}
}
java容器
List
- ArrAyList
- LinkedList
- Vector
//增刪改查方法
public void add(Object element) //增添元素
public void add(int index,Object element) //在指定位置增添元素
public boolean remove(Object o) //刪除指定物件
public Object remove(int index) //刪除指定位置的元素
public Object set(int index,Object element) //修改指定位置元素的值
public Object get(int index) //獲取指定位置元素
public int indexOf(Object o) //獲取指定元素的位置
public boolean contains(Object o) //判斷指定元素是否存在
//其他常用方法
public int size() //獲取容器中元素個數
public Iterator<E> iterator() //獲取迭代器
public void clear() //清空元素
LinkList模擬佇列和棧的介面
//模擬棧和佇列操作
public void addFirst(Object o) //在連結串列頭增添元素
public void addLast(Object o) //在連結串列尾增添元素
public Object removeFirst() //刪除連結串列頭元素,並返回該元素
public Object removeLast() //刪除連結串列尾元素,並返回該元素
public boolean isEmpty() //判斷連結串列是否為空
public void push(E e) //等價於addFirst()
public E pop() //等價於removeFirst()
public E getFirst() //獲取連結串列首元素
public E getLast() //獲取連結串列尾元素
Set
- HashSet
- TreeSet
//增刪查方法
public void add(Object element) //增添元素
public boolean remove(object element) //刪除元素
public boolean contains(Object o) //判斷元素是否存在
//其他常用方法
public int size() //獲取容器中元素個數
public boolean isEmpty() //判斷集合是否為空
public Iterator<E> iterator() //獲取迭代器
public void clear() //清空元素
Map
- HashMap
- TreeMap
//增刪查
public Object put(Object key,Object value) //增添元素
public Object remove(Object key) //刪除元素,並返回鍵對應的值
public Object get(Object key) //獲取鍵對應的值
public boolean containsKey(Object key) //判斷指定鍵是否存在
public boolean containsValue(Object value) //判斷指定值是否存在
//獲取鍵、值、元素集合
public Collection values() //獲取值集合
public Set KeySet() //獲取鍵集合
public Set entrySet() //獲取元素集合
//其他方法
public int size() //獲取容器中元素個數
public boolean isEmpty() //判斷容器是否為空
public void clear() //清空元素
Map 介面沒有提供 iterator() 方法,其子介面 Entry 提供了 iterator() 方法,並且提供了獲取鍵、值的方法,如下:
//Map.Entry介面主要方法
public Iterator<E> iterator() //獲取迭代器
public Object getKey() //獲取鍵
public Object getValue() //獲取值
//呼叫案例
Iterator(Entry) iter=map.entrySet().iterator();
while(iter.hasNext()){
Entry entry=iter.next();
int key=(Integer)entry.getKey();
int val=(Integer)entry.getValue();
}
其它容器常用方法
Arrays
public static int binarySearch(Object[] a, Object key) //二分查詢(a已排序)
public static boolean equals(Object[] a, Object[] a2) //判斷兩陣列是否完全一致
public static void fill(Object[] a, Object val) //在a中所有位置填充val
public static void fill(Object[] a, int fromIndex, int toIndex, Object val) //在[fromIndex,toIndex)中填充元素val
public static String toString(Object[] a) //將陣列a轉換為字串,如"[1, 2, 3]"
public static void sort(Object[] a) //改進的快速排序(升序)
public static void sort(Object[] a, int fromIndex, int toIndex) //對[fromIndex,toIndex)中的元素排序(升序)
public static <T> void sort(T[] a, Comparator<? super T> c) //自定義比較器排序
排序案例:升序排序直接呼叫 sort() ,降序排序需要實現比較器(Comparator )介面
import java.util.Arrays;
import java.util.Comparator;
public class Sort{
static Integer[] a= {5,8,4,2,9,3,1,6,7};
static String[] s= {"Tom","John","Marry","Katty","Jerry"};
public static void main(String[] args) {
Arrays.sort(a); //1 2 3 4 5 6 7 8 9
Arrays.sort(s); //Jerry John Katty Marry Tom
Arrays.sort(a,new Comparator<Integer>() {
public int compare(Integer o1, Integer o2) {
return o2-o1;
}
}); //9 8 7 6 5 4 3 2 1
Arrays.sort(s,new Comparator<String>() {
public int compare(String o1, String o2) {
return o2.compareTo(o1);
}
}); //Tom Marry Katty John Jerry
}
}
優先佇列(PriorityQueue)
首先import java.util.PriorityQueue
- PriorityQueue中放置的元素必須要能夠比較大小 (只有實現了 Comparable 和 Comparator 介面的類才能比較大小),不能插入無法比較大小的物件,否則會丟擲 ClassCastException 異常
- 不能插入 null 物件,否則會丟擲 NullPointerException 異常
- 沒有容量限制,可以插入任意多個元素,其內部可以自動擴容
- 插入和刪除元素的時間複雜度均為 O(log2N)
- PriorityQueue底層使用了堆資料結構
常用介面
Java中的優先佇列(PriorityQueue)是Java集合框架的一部分,它實現了Queue介面,並且使用堆資料結構來維護元素的優先順序順序。以下是一些常用的Java優先佇列介面:
- PriorityQueue():建立一個空的優先佇列。
PriorityQueue<Integer> pq = new PriorityQueue<>();
- PriorityQueue(Comparator<? super E> comparator):建立一個空的優先佇列,並使用指定的比較器對元素進行排序。
Comparator<Integer> reverseOrder = Collections.reverseOrder();
PriorityQueue<Integer> pq = new PriorityQueue<>(reverseOrder);
- add(E e):將指定的元素插入此優先佇列。
pq.add(5);
- offer(E e):將指定的元素插入此優先佇列(如果立即可行且不會違反容量限制),成功時返回true。
boolean success = pq.offer(10);
- poll():檢索並刪除此佇列的頭,如果此佇列為空,則返回null。
Integer head = pq.poll();
- peek():檢索但不刪除此佇列的頭,如果此佇列為空,則返回null。
Integer head = pq.peek();
- remove(Object o):從佇列中移除指定元素的單個例項(如果存在)。
boolean removed = pq.remove(5);
- contains(Object o):如果此佇列包含指定的元素,則返回true。
boolean contains = pq.contains(10);
- size():返回佇列中的元素數量。
int size = pq.size();
- isEmpty():如果佇列不包含任何元素,則返回true。
boolean isEmpty = pq.isEmpty();
- clear():從佇列中移除所有元素。
pq.clear();
這些介面為Java優先佇列提供了基本的操作,使得你可以方便地進行元素的新增、刪除、檢視以及佇列的狀態查詢等操作。注意,由於優先佇列是基於堆實現的,所以元素在佇列中的位置可能會隨著元素的插入和刪除而改變,以滿足優先順序的順序。
Collections
- Collections類對Collection提供的方法
public static Object max(Collection coll) //獲取最大值
public static Object min(Collection coll) //獲取最小值
- Collections類對List物件提供的方法
public static int binarySearch(List list, Object key) //查詢元素
public static void copy(List dest, List src) //將src複製給dest
public static void fill(List list, Object obj) //在list中填充obj
public static void reverse(List list) //列表元素倒置
public static void sort(List list) //升序排序
public static <T> void sort(List<T> list, Comparator<? super T> c) //自定義比較器排序
- Collections類提供的集合同步處理方法
public static Collection synchronizedCollection(Collection c) //Collection物件同步
public static List synchronizedList(List list) //List物件同步
public static Set synchronizedSet(Set s) //Set物件同步
public static Map synchronizedMap(Map m) //Map物件同步