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();
}
}
}