数组
在Java中,数组是一个基础的数据结构,用来存储固定大小的同类型元素。数组本身在Java中是一个对象,但它的方法比较有限,主要依赖于Java的Arrays
类来进行数组操作。
排序
sort()
:- 对整个数组或指定范围的元素进行排序。重载版本支持所有基本类型数组和对象数组。对于对象数组,可以使用自定义的
Comparator
。 - 例子:
Arrays.sort(array);
或Arrays.sort(array, Comparator.reverseOrder());
- 对整个数组或指定范围的元素进行排序。重载版本支持所有基本类型数组和对象数组。对于对象数组,可以使用自定义的
搜索
binarySearch()
:- 在已排序的数组中使用二分查找法查找特定元素的索引。如果数组未排序,则结果是不确定的。
- 例子:
int index = Arrays.binarySearch(array, key);
填充
fill()
:- 将指定的值分配给数组中的每个或某个范围的元素。
- 例子:
Arrays.fill(array, value);
转换为列表
asList()
:- 返回一个固定大小的列表,该列表由数组支持,因此转换后的列表和原数组共享相同的数据。
- 例子:
List<Integer> list = Arrays.asList(1, 2, 3);
复制
copyOf()
和copyOfRange()
:copyOf()
创建一个新的数组,复制原始数组的指定长度的元素。copyOfRange()
复制原始数组指定范围的元素到新数组。- 例子:
int[] newArray = Arrays.copyOf(array, newLength);
比较
equals()
:- 比较两个数组的内容是否相等。
- 例子:
boolean isEqual = Arrays.equals(array1, array2);
打印
toString()
:- 返回数组内容的字符串表示形式。
- 例子:
String arrayAsString = Arrays.toString(array);
哈希
hashCode()
:- 根据数组内容生成一个哈希码。
- 例子:
int hash = Arrays.hashCode(array);
深度比较和哈希
deepEquals()
和deepHashCode()
:deepEquals()
用于比较多维数组。deepHashCode()
为多维数组生成深度哈希码。- 例子:
boolean isDeepEqual = Arrays.deepEquals(array1, array2);
并行操作
parallelSort()
:- 使用并行排序算法对数组进行排序,利用多核处理器加速排序过程。
- 例子:
Arrays.parallelSort(array);
栈(Stack)
在Java中,栈(Stack)是一种后进先出(LIFO)的数据结构,它提供了基本的操作来支持添加、删除和检查元素。Java标准库中的java.util.Stack
类继承自Vector
,提供了特定于栈的操作。下面是Stack
类中的一些常用方法:
-
push()
:- 将一个元素压入栈顶。
- 参数
item
是要添加到栈顶的元素。 - 返回被压入的元素。
-
pop()
:- 移除栈顶的元素,并作为此方法的值返回该对象。
- 如果栈为空,则抛出
EmptyStackException
。
-
peek()
:- 查看栈顶的元素但不从栈中移除它。
- 如果栈为空,则抛出
EmptyStackException
。
-
empty()
:- 检查栈是否为空。
- 返回
true
如果栈为空,否则返回false
。
-
search(Object o)
:- 返回对象在栈中的位置,以1为基数计算。
- 如果对象在栈中,返回从栈顶到该对象的距离;如果对象不在栈中,则返回
-1
哈希表
在Java中,哈希表通常通过HashMap
类实现,这是java.util
包中提供的一个部分。HashMap
提供了一种通过键值对存储和管理数据的方式,其基于哈希表的数据结构允许快速的查找、添加和删除操作。以下是HashMap
中的一些常用方法:
-
put(K key, V value)
:- 将指定的键和值关联在哈希表中。
- 如果键已经存在,则替换旧的值。
- 返回与键关联的前一个值,如果键是新的,则返回
null
。
-
get(Object key)
:- 根据指定的键从哈希表中检索值。
- 如果哈希表包含该键的映射,则返回与该键关联的值;否则,返回
null
。
-
remove(Object key)
:- 从哈希表中移除指定键的映射(如果存在)。
- 返回被移除的值,如果键不存在,则返回
null
。
-
containsKey(Object key)
:- 检查哈希表是否包含指定的键。
- 返回
true
如果哈希表包含指定的键。
-
containsValue(Object value)
:- 检查哈希表是否包含一个或多个键映射到指定值。
- 返回
true
如果哈希表中至少有一个键映射到该值。
-
size()
:- 返回哈希表中的键值对数量。
-
isEmpty()
:- 检查哈希表是否为空(即不包含键值对)。
- 返回
true
如果哈希表为空。
-
clear()
:- 清除哈希表中的所有映射。
-
keySet()
:- 返回哈希表中所有键的集合。
- 该集合可以用来遍历哈希表。
-
values()
:- 返回哈希表中所有值的集合。
- 这允许遍历所有值,但不保证顺序。
-
entrySet()
:- 返回哈希表中所有映射项的集合。
- 每个元素是一个
Map.Entry<K,V>
对象,可以从中检索键和值。
字符串 (String
)
Java 中的字符串 (String
) 类提供了丰富的方法来操作文本。这些方法允许进行搜索、比较、替换、转换等操作,使字符串的处理变得非常灵活和强大。下面是一些常用的 String
方法:
-
length()
:- 返回字符串的长度(字符数)。
-
charAt(int index)
:- 返回指定位置(
index
)的字符。
- 返回指定位置(
-
substring(int beginIndex, int endIndex)
:- 返回字符串的一个子字符串,从
beginIndex
开始到endIndex
结束(不包括endIndex
)。 - 也有一个重载版本
substring(int beginIndex)
,从beginIndex
到字符串末尾。
- 返回字符串的一个子字符串,从
-
contains(CharSequence s)
:- 检查字符串是否包含指定的字符序列。
-
indexOf(String str)
:- 返回指定字符串第一次出现的索引位置,如果不存在则返回-1。
- 也有一个重载版本
indexOf(String str, int fromIndex)
,从指定位置开始搜索。
-
lastIndexOf(String str)
:- 返回指定字符串最后一次出现的索引位置,如果不存在则返回-1。
- 也有一个重载版本
lastIndexOf(String str, int fromIndex)
,从指定位置开始反向搜索。
-
equals(Object anotherObject)
:- 比较两个字符串的内容是否相等。
-
equalsIgnoreCase(String anotherString)
:- 比较两个字符串的内容是否相等,忽略大小写。
-
startsWith(String prefix)
:- 检查字符串是否以指定的前缀开始。
-
endsWith(String suffix)
:- 检查字符串是否以指定的后缀结束。
-
toLowerCase()
:- 将字符串中的所有字符转换为小写。
-
toUpperCase()
:- 将字符串中的所有字符转换为大写。
-
trim()
:- 返回一个新字符串,它是通过删除原始字符串的首尾空白得到的。
-
replace(char oldChar, char newChar)
:- 返回一个新字符串,它是通过替换原始字符串中的某些字符得到的。
-
replaceAll(String regex, String replacement)
:- 使用给定的替换将与给定的正则表达式匹配的字符串部分替换。
-
split(String regex)
:- 根据匹配给定正则表达式的方式来拆分字符串。
- 通常返回一个字符串数组。
-
isEmpty()
:- 检查字符串是否为空(
length() == 0
)。
- 检查字符串是否为空(
-
concat(String str)
:- 将指定字符串连接到此字符串的末尾。
-
intern()
:- 返回字符串的规范表示形式。
-
format(String format, Object... args)
:- 返回一个使用指定语言环境、格式字符串和参数格式化的新字符串。
链表
在Java中,链表主要通过LinkedList
类实现,它是java.util
包中的一部分。LinkedList
实现了List
接口以及Deque
接口,因此它不仅支持列表的操作,还支持双端队列的功能。以下是LinkedList
的一些常用方法:
作为列表的方法
-
add(E element)
:- 在链表的末尾添加一个元素。
- 返回
true
表示添加成功。
-
add(int index, E element)
:- 在链表的指定位置插入一个元素。
-
remove(int index)
:- 移除链表中指定位置的元素。
- 返回被移除的元素。
-
remove(Object o)
:- 移除链表中第一次出现的指定元素(如果存在)。
- 返回
true
如果元素被成功移除。
-
get(int index)
:- 获取链表中指定位置的元素。
-
set(int index, E element)
:- 替换链表中指定位置的元素,返回旧元素。
-
indexOf(Object o)
:- 返回链表中首次出现的指定元素的索引,如果链表不包含该元素,则返回-1。
-
lastIndexOf(Object o)
:- 返回链表中最后出现的指定元素的索引,如果链表不包含该元素,则返回-1。
-
size()
:- 返回链表中的元素个数。
-
isEmpty()
:- 检查链表是否为空。
- 返回
true
如果链表不包含任何元素。
作为双端队列的方法
-
addFirst(E e)
:- 在链表的开头添加一个元素。
-
addLast(E e)
:- 在链表的末尾添加一个元素。
-
removeFirst()
:- 移除并返回链表的第一个元素。
-
removeLast()
:- 移除并返回链表的最后一个元素。
-
getFirst()
:- 获取链表的第一个元素。
-
getLast()
:- 获取链表的最后一个元素。
-
peekFirst()
:- 查看链表的第一个元素,不移除。
-
peekLast()
:- 查看链表的最后一个元素,不移除。
-
pollFirst()
:- 移除并返回链表的第一个元素,如果链表为空,则返回
null
。
- 移除并返回链表的第一个元素,如果链表为空,则返回
-
pollLast()
:- 移除并返回链表的最后一个元素,如果链表为空,则返回
null
。
- 移除并返回链表的最后一个元素,如果链表为空,则返回
迭代和清空
-
clear()
:- 移除链表中的所有元素。
-
iterator()
:- 返回一个迭代器,用于在链表中的元素之间进行迭代。
-
listIterator(int index)
:- 返回一个列表迭代器,允许从指定位置开始访问链表。