服装设计学校排名seo服务外包
目录
- 标准输出
- 控制语句
- 条件判断 if else
- 循环-for/while
- 基本数据结构
- 动态数组
ArrayList
- 双链表
LinkedList
- 队列
Queue
- 栈
Stack
- 哈希表
HashMap
- 哈希集合
HashSet
- 动态数组
- 声明
标准输出
Java 的标准输出是 System.out.println
,用于在控制台打印内容并换行。System.out.print
可以用于不换行的输出。
int a = 10;// 输出:10
System.out.println(a);// 可以串联输出
// 输出:Hello, World!
System.out.println("Hello" + ", " + "World!");String s = "abc";
// 输出:abc 10
System.out.println(s + " " + a);// 格式化输出
// 输出:abc 10
System.out.printf("%s %d\n", s, a);
控制语句
编程语言的控制语句一般都比较简单,最常见的无非就是条件判断和循环,下面简单介绍一下。
条件判断if-else
int a = 10;if (a > 5) {System.out.println("a > 5");
} else if (a == 5) {System.out.println("a == 5");
} else {System.out.println("a < 5");
}
// 输出:a > 5
循环-for/while
for
和 while
都可以用来做循环,for
循环一般用于已知循环次数的情况,while
循环一般用于未知循环次数的情况。
// 输出:0 1 2 3 4
for (int i = 0; i < 5; i++) {System.out.print(i + " ");
}
System.out.println();int num = 100;
// 输出:100 50 25 12 6 3 1
while (num > 0) {System.out.print(num + " ");num /= 2;
}
System.out.println();
基本数据结构
Java 的标准库提供了多种常用数据结构,如 ArrayList
、LinkedList
、HashMap
、HashSet
等。以下是一些常用数据结构的介绍及其使用方法。
动态数组ArrayList
ArrayList
是 Java 标准库中的动态数组实现。相比于固定大小的数组,ArrayList
可以根据需要动态调整大小。
初始化方法:
import java.util.ArrayList;// 初始化一个空的 ArrayList nums
ArrayList<Integer> nums = new ArrayList<>();// 初始化一个包含元素 1, 3, 5 的 ArrayList nums
ArrayList<Integer> nums = new ArrayList<>(Arrays.asList(1, 3, 5));
ArrayList
有很多方法,下面举几个常用方法的例子:
import java.util.ArrayList;
import java.util.Collections;public class Main {public static void main(String[] args) {int n = 10;// 初始化 ArrayList,大小为 10,元素值都为 0ArrayList<Integer> nums = new ArrayList<>(Collections.nCopies(n, 0));// 输出:falseSystem.out.println(nums.isEmpty());// 输出:10System.out.println(nums.size());// 在数组尾部插入一个元素 20nums.add(20);// 输出:11System.out.println(nums.size());// 得到数组最后一个元素// 输出:20System.out.println(nums.get(nums.size() - 1));// 删除数组的最后一个元素nums.remove(nums.size() - 1);// 输出:10System.out.println(nums.size());// 可以通过索引直接取值或修改nums.set(0, 11);// 输出:11System.out.println(nums.get(0));// 在索引 3 处插入一个元素 99nums.add(3, 99);// 删除索引 2 处的元素nums.remove(2);// 交换 nums[0] 和 nums[1]Collections.swap(nums, 0, 1);// 遍历数组// 输出:0 11 99 0 0 0 0 0 0 0for(int num : nums) {System.out.print(num + " ");}System.out.println();}
}
常用方法说明
-
初始化
new ArrayList<>(Collections.nCopies(n, 0))
初始化一个长度为n
且所有元素均为0
的ArrayList
。
-
判断是否为空
isEmpty()
检查列表是否为空,返回true
或false
。
-
获取列表大小
size()
返回列表中当前元素的个数。
-
添加元素
add(E element)
在列表末尾添加一个元素。add(int index, E element)
在指定索引位置插入一个元素,后续元素依次后移。
-
获取元素
get(int index)
根据索引获取对应位置的元素。
-
删除元素
remove(int index)
删除指定索引处的元素,列表大小相应减少。
-
修改元素
set(int index, E element)
修改指定位置的元素为新的值。
-
交换元素
Collections.swap(List<?> list, int i, int j)
交换列表中两个指定索引位置的元素。
-
遍历列表
- 使用增强型
for
循环可以方便地遍历所有元素。
以上就是 JavaArrayList
的常用方法,主要包括通过索引访问元素以及添加、删除元素的方法。在算法题中,ArrayList
的这些方法已经足够使用。
- 使用增强型
双链表LinkedList
LinkedList
是 Java 标准库中的双向链表实现。相比于 ArrayList
,LinkedList
在头部和尾部插入和删除元素时性能更好。
LinkedList
的常用方法:
import java.util.Arrays;
import java.util.LinkedList;public class Main {public static void main(String[] args) {// 初始化链表LinkedList<Integer> lst = new LinkedList<>(Arrays.asList(1, 2, 3, 4, 5));// 检查链表是否为空,输出:falseSystem.out.println(lst.isEmpty());// 获取链表的大小,输出:5System.out.println(lst.size());// 在链表头部插入元素 0lst.addFirst(0);// 在链表尾部插入元素 6lst.addLast(6);// 获取链表头部和尾部元素,输出:0 6System.out.println(lst.getFirst() + " " + lst.getLast());// 删除链表头部元素lst.removeFirst();// 删除链表尾部元素lst.removeLast();// 在链表中插入元素// 移动到第三个位置lst.add(2, 99);// 删除链表中某个元素lst.remove(1);// 遍历链表// 输出:1 99 3 4 5for(int val : lst) {System.out.print(val + " ");}System.out.println();}
}
常用方法说明
-
初始化
new LinkedList<>(Arrays.asList(...))
使用已有集合初始化一个链表。
-
判断是否为空
isEmpty()
检查链表是否为空,返回true
或false
。
-
获取链表大小
size()
返回链表中元素的数量。
-
在头部和尾部插入元素
addFirst(E element)
在链表头部插入一个元素。addLast(E element)
在链表尾部插入一个元素。
-
获取头部和尾部元素
getFirst()
获取链表第一个元素。getLast()
获取链表最后一个元素。
-
删除头部和尾部元素
removeFirst()
删除链表第一个元素。removeLast()
删除链表最后一个元素。
-
在指定位置插入或删除元素
add(int index, E element)
在指定索引位置插入一个元素,后续元素依次后移。remove(int index)
删除指定索引处的元素。
-
遍历链表
- 通过增强型
for
循环遍历所有元素,输出每个节点的值。
一般来说,当我们想在头部增删元素时会使用LinkedList
,因为它在头部增删元素的效率比ArrayList
高。但当需要频繁通过索引访问元素时,我们会使用ArrayList
- 通过增强型
队列Queue
Queue
是 Java 标准库中的队列接口,常用的实现类有 LinkedList
和 PriorityQueue
。这里以 LinkedList
为例。
import java.util.Queue;
import java.util.LinkedList;public class Main {public static void main(String[] args) {// 初始化一个空的整型队列 qQueue<Integer> q = new LinkedList<>();// 在队尾添加元素q.offer(10);q.offer(20);q.offer(30);// 检查队列是否为空,输出:falseSystem.out.println(q.isEmpty());// 获取队列的大小,输出:3System.out.println(q.size());// 获取队列的队头元素// 输出:10System.out.println(q.peek());// 删除队头元素q.poll();// 输出新的队头元素:20System.out.println(q.peek());}
}
常用方法说明
-
添加元素
offer(E element)
在队尾添加一个元素。如果添加成功,返回true
。
-
检查队列状态
isEmpty()
检查队列是否为空,返回true
或false
。size()
返回队列中当前元素的个数。
-
获取队头元素
peek()
获取队列的队头元素,但不移除它。如果队列为空,返回null
。
-
删除队头元素
poll()
删除并返回队列的队头元素。如果队列为空,返回null
。
栈Stack
栈是一种后进先出(LIFO)的数据结构,Java 提供了 Stack
类来实现栈的功能:
import java.util.Stack;public class Main {public static void main(String[] args) {// 初始化一个空的整型栈 sStack<Integer> s = new Stack<>();// 向栈顶添加元素s.push(10);s.push(20);s.push(30);// 检查栈是否为空,输出:falseSystem.out.println(s.isEmpty());// 获取栈的大小,输出:3System.out.println(s.size());// 获取栈顶元素,输出:30System.out.println(s.peek());// 删除栈顶元素s.pop();// 输出新的栈顶元素:20System.out.println(s.peek());}
}
常用方法说明
-
添加元素
push(E element)
将元素添加到栈顶。
-
检查栈是否为空
isEmpty()
判断栈是否为空,返回true
或false
。
-
获取栈的大小
size()
返回栈中当前的元素个数。
-
获取栈顶元素
peek()
返回栈顶元素但不移除它。如果栈为空,通常会抛出异常。
-
删除栈顶元素
pop()
删除并返回栈顶元素。如果栈为空,通常会抛出异常。
哈希表HashMap
HashMap
是 Java 标准库中的哈希表实现,提供了基于键值对(key-value)的存储,可以高效的完成键值对的增删查改操作。
HashMap
的常用方法如下:
import java.util.HashMap;
import java.util.Map;public class Main {public static void main(String[] args) {// 初始化哈希表HashMap<Integer, String> hashmap = new HashMap<>();hashmap.put(1, "one");hashmap.put(2, "two");hashmap.put(3, "three");// 检查哈希表是否为空,输出:falseSystem.out.println(hashmap.isEmpty());// 获取哈希表的大小,输出:3System.out.println(hashmap.size());// 查找指定键值是否存在// 输出:Key 2 -> twoif(hashmap.containsKey(2)) {System.out.println("Key 2 -> " + hashmap.get(2));} else {System.out.println("Key 2 not found.");}// 获取指定键对应的值,若不存在会返回 null// 输出:nullSystem.out.println(hashmap.get(4));// 获取指定键对应的值,若不存在则返回默认值// 输出:defaultValSystem.out.println(hashmap.getOrDefault(4, "defaultVal"));// 插入一个新的键值对hashmap.put(4, "four");// 获取新插入的值,输出:fourSystem.out.println(hashmap.get(4));// 删除键值对hashmap.remove(3);// 检查删除后键 3 是否存在// 输出:Key 3 not found.if(hashmap.containsKey(3)) {System.out.println("Key 3 -> " + hashmap.get(3));} else {System.out.println("Key 3 not found.");}// 遍历哈希表// 输出(顺序可能不同):// 1 -> one// 2 -> two// 4 -> fourfor(Map.Entry<Integer, String> pair : hashmap.entrySet()) {System.out.println(pair.getKey() + " -> " + pair.getValue());}}
}
常用方法说明
-
初始化与添加
put(K key, V value)
向HashMap
中插入键值对。如果键已存在,则更新对应的值。
-
检查哈希表状态
isEmpty()
判断HashMap
是否为空,返回true
或false
。size()
获取HashMap
中键值对的数量。
-
查找与获取
containsKey(Object key)
检查是否包含指定的键。get(Object key)
根据键获取对应的值,若键不存在则返回null
。getOrDefault(Object key, V defaultValue)
获取指定键对应的值,若不存在则返回默认值。
-
删除
remove(Object key)
删除指定键对应的键值对。
-
遍历
entrySet()
返回一个包含所有键值对的Set
,通过增强型for
循环可方便地遍历每个元素。
哈希集合HashSet
HashSet
是 Java 标准库中的哈希集合实现,用于存储不重复的元素,常见使用场景是对元素进行去重。
HashSet
的常用方法:
import java.util.Arrays;
import java.util.HashSet;public class Main {public static void main(String[] args) {// 初始化哈希集合HashSet<Integer> hashset = new HashSet<>(Arrays.asList(1, 2, 3, 4));// 检查哈希集合是否为空,输出:falseSystem.out.println(hashset.isEmpty());// 获取哈希集合的大小,输出:4System.out.println(hashset.size());// 查找指定元素是否存在// 输出:Element 3 found.if(hashset.contains(3)) {System.out.println("Element 3 found.");} else {System.out.println("Element 3 not found.");}// 插入一个新的元素hashset.add(5);// 删除一个元素hashset.remove(2);// 输出:Element 2 not found.if(hashset.contains(2)) {System.out.println("Element 2 found.");} else {System.out.println("Element 2 not found.");}// 遍历哈希集合// 输出(顺序可能不同):// 1// 3// 4// 5for(int element : hashset) {System.out.println(element);}}
}
常用方法说明
-
初始化
- 使用构造函数和已有集合初始化:
new HashSet<>(Arrays.asList(...))
。
- 使用构造函数和已有集合初始化:
-
检查集合状态
isEmpty()
判断HashSet
是否为空,返回true
或false
。size()
获取集合中元素的个数。
-
查找元素
contains(Object o)
判断集合中是否包含指定元素,返回true
或false
。
-
添加元素
add(E e)
向集合中添加一个元素。如果该元素已存在,添加操作将无效。
-
删除元素
remove(Object o)
删除集合中的指定元素。
-
遍历集合
- 通过增强型
for
循环遍历HashSet
中的所有元素,遍历顺序不保证与插入顺序相同。
- 通过增强型
声明
参考资料:
Java 语言基础 | labuladong 的算法笔记
自用,侵删