数组
Java 中数组是一种存储固定数量元素的数据结构,它具有以下特点:
数组长度是固定的,一旦创建,长度就不能再改变。
数组可以存储任意类型的数据,包括基本类型和对象类型。
数组中的元素是有序的,可以通过下标访问。
Java 中提供了一系列方法来处理数组,包括以下常用方法:
1、创建数组
Java 中使用关键字 new 来创建数组,语法如下:
数据类型[] 数组名=new数据类型[数组长度];
例如,创建一个包含 5 个整数的数组:
int[] arr=newint[5];
1.1 初始化数组
Java 中有两种初始化数组的方法:静态初始化和动态初始化。
静态初始化是指在声明数组时就给数组赋初值,语法如下:
数据类型[] 数组名= {元素1, 元素2, ..., 元素n};
例如,创建一个包含 3 个整数的数组,并给数组赋初值:
int[] arr= {1, 2, 3};
动态初始化是指先声明数组,然后再给数组元素赋值,语法如下:
数据类型[] 数组名=new数据类型[数组长度];
数组名[下标] =元素值;
例如,创建一个包含 3 个整数的数组,并给数组赋值:
int[] arr=newint[3];
arr[0] =1;
arr[1] =2;
arr[2] =3;
2、访问数组元素
Java 中通过下标来访问数组元素,下标从 0 开始,语法如下:
数组名[下标]
例如,访问数组 arr 的第二个元素:
intx=arr[1];
2.1 遍历数组
Java 中可以使用循环语句遍历数组,常用的有 for 循环和 foreach 循环。
for 循环遍历数组,语法如下:
for (inti=0; i<数组长度; i++) {
// 循环体
}
例如,遍历数组 arr 并打印每个元素:
for (inti=0; i<arr.length; i++) {
System.out.println(arr[i]);
}
foreach 循环遍历数组,语法如下:
for (数据类型变量名 : 数组名) {
// 循环体
}
例如,使用 foreach 循环遍历数组 arr 并打印每个元素:
for (intx : arr) {
System.out.println(x);
}
3、数组排序
Java 中可以使用 Arrays 类的 sort() 方法对数组进行排序,语法如下:
Arrays.sort(数组名);
例如,对数组 arr 进行升序排序:
Arrays.sort(arr);
4、数组复制
Java 中可以使用 Arrays 类的 copyOf() 和 copyOfRange() 方法复制数组。
copyOf() 方法用于复制整个数组,语法如下:
数据类型[] 新数组名=Arrays.copyOf(原数组名, 新数组长度);
例如,复制数组 arr 并将结果存储到新数组 newArr 中:
int[] newArr=Arrays.copyOf(arr, arr.length);
copyOfRange() 方法用于复制数组的一部分,语法如下:
数据类型[] 新数组名=Arrays.copyOfRange(原数组名, 起始下标, 终止下标);
例如,复制数组 arr 的第二个到第四个元素,并将结果存储到新数组 newArr 中:
int[] newArr=Arrays.copyOfRange(arr, 1, 4);
5、数组转换为字符串
Java 中可以使用 Arrays 类的 toString() 方法将数组转换为字符串,语法如下:
String字符串名=Arrays.toString(数组名);
例如,将数组 arr 转换为字符串并打印出来:
System.out.println(Arrays.toString(arr));
以上就是 Java 中常用的数组方法。除此之外,Java 还提供了一些其他的数组方法,例如 binarySearch()、fill()、equals() 等。如果需要更深入地了解数组方法,请参考 Java 文档。
字符串
1、字符串长度
Java 中可以使用 length() 方法获取字符串的长度,语法如下:
int长度=字符串名.length();
例如,获取字符串 str 的长度并打印出来:
intlen=str.length();
System.out.println(len);
2、字符串连接
Java 中可以使用 + 运算符或 concat() 方法将字符串连接起来,语法如下:
String字符串名=字符串1+字符串2;
String字符串名=字符串1.concat(字符串2);
例如,将字符串 str1 和 str2 连接起来,并将结果存储到新的字符串 str 中:
Stringstr=str1+str2;
Stringstr=str1.concat(str2);
3、字符串截取
Java 中可以使用 substring() 方法截取字符串的一部分,语法如下:
String子串=字符串名.substring(起始下标);
String子串=字符串名.substring(起始下标, 终止下标);
例如,从字符串 str 的第三个字符开始截取到末尾:
Stringsub=str.substring(2);
或者从字符串 str 的第三个字符开始截取到第七个字符:
Stringsub=str.substring(2, 6);
需要注意的是,起始下标从 0 开始计数,而终止下标不包括在截取的子串中。
4、字符串查找
Java 中可以使用 indexOf() 方法查找字符串中第一次出现某个子串的位置,语法如下:
int位置=字符串名.indexOf(子串);
例如,查找字符串 str 中第一次出现子串 "hello" 的位置:
intpos=str.indexOf("hello");
如果查找失败,indexOf() 方法返回 -1。
5、字符串替换
Java 中可以使用 replace() 方法将字符串中的某个子串替换成另一个字符串,语法如下:
String新字符串=字符串名.replace(旧子串, 新子串);
例如,将字符串 str 中的子串 "hello" 替换为 "hi":
StringnewStr=str.replace("hello", "hi");
6、字符串分割
Java 中可以使用 split() 方法将字符串按照某个分隔符分割成字符串数组,语法如下:
String[] 字符串数组名=字符串名.split(分隔符);
例如,将字符串 str 按照空格分割成字符串数组 arr:
String[] arr=str.split(" ");
7、字符串转换为字符数组
Java 中可以使用 toCharArray() 方法将字符串转换为字符数组,语法如下:
char[] 字符数组名=字符串名.toCharArray();
例如,将字符串 str 转换为字符数组 charArr:
8、字符串大小写转换
Java 中可以使用 toUpperCase() 方法将字符串转换为大写形式,也可以使用 toLowerCase() 方法将字符串转换为小写形式,语法如下:
String大写字符串名=字符串名.toUpperCase();
String小写字符串名=字符串名.toLowerCase();
例如,将字符串 str 转换为大写形式和小写形式:
StringupperStr=str.toUpperCase();
StringlowerStr=str.toLowerCase();
9、字符串去除空格
Java 中可以使用 trim() 方法去除字符串两端的空格,语法如下:
String 新字符串名 = 字符串名.trim();
例如,去除字符串 str 两端的空格:
StringnewStr=str.trim();
10、字符串比较
Java 中可以使用 equals() 方法比较两个字符串是否相等,语法如下:
boolean是否相等=字符串1.equals(字符串2);
例如,比较字符串 str1 和 str2 是否相等:
booleanisEqual=str1.equals(str2);
需要注意的是,字符串比较时要使用 equals() 方法,而不能使用 == 运算符,因为 == 运算符比较的是两个字符串的引用地址是否相等,而不是字符串的内容是否相等。
11、字符串格式化
Java 中可以使用 format() 方法按照指定格式将数据格式化成字符串,语法如下:
String格式化字符串名=String.format(格式, 数据1, 数据2, ...);
例如,将整数 num 格式化为八进制字符串:
StringoctStr=String.format("%o", num);
需要注意的是,格式化字符串中的 % 符号代表占位符,后面的字母表示数据类型,例如 %d 表示整数,%f 表示浮点数,%s 表示字符串。
栈,队列,树,哈希,集合
1、栈
Java 中的栈可以使用 Stack 类或 Deque 接口的实现类 LinkedList 来创建。
创建 Stack 对象:
Stack<Integer>stack=newStack<>();
创建 LinkedList 对象作为栈:
LinkedList<Integer>stack=newLinkedList<>();
栈的常用方法:
push(item):将元素压入栈顶。
pop():将栈顶元素弹出并返回。
peek():返回栈顶元素但不弹出。
empty():判断栈是否为空。
search(item):返回元素在栈中的位置,从栈顶开始计数。
示例:
Stack<Integer>stack=newStack<>();
stack.push(1);
stack.push(2);
stack.push(3);
inttop=stack.peek(); // 返回 3
intpopItem=stack.pop(); // 将 3 弹出栈顶
booleanisEmpty=stack.empty(); // 返回 false
intindex=stack.search(2); // 返回元素 2 在栈中的位置,从栈顶开始计数
2、队列
Java 中的队列可以使用 Queue 接口的实现类 LinkedList 来创建。
创建 LinkedList 对象作为队列:
LinkedList<Integer>queue=newLinkedList<>();
队列的常用方法:
add(item):将元素添加到队列末尾。
remove():从队列头部移除并返回元素。
peek():返回队列头部元素但不移除。
offer(item):将元素添加到队列末尾,如果添加失败则返回 false。
poll():从队列头部移除并返回元素,如果队列为空则返回 null。
element():返回队列头部元素但不移除,如果队列为空则抛出 NoSuchElementException 异常。
示例:
Queue<Integer>queue=newLinkedList<>();
queue.add(1);
queue.add(2);
queue.add(3);
inthead=queue.peek(); // 返回 1
intremoveItem=queue.remove(); // 将 1 移除队列头部
booleanofferResult=queue.offer(4); // 将 4 添加到队列末尾
intpollItem=queue.poll(); // 将 2 移除队列头部并返回
3、树
Java 中的树可以使用 TreeNode 类来创建。TreeNode 类包含一个值和两个 TreeNode 类型的子节点。
创建 TreeNode 对象:
classTreeNode {
intval;
TreeNodeleft;
TreeNoderight;
TreeNode(intx) { val=x; }
}
树的遍历可以分为前序遍历、中序遍历和后序遍历。其中,前序遍历的遍历顺序为根节点、左子树、右子树;中序遍历的遍历顺序为左子树、根节点、右子树;后序遍历的遍历顺序为左子树、右子树、根节点。
遍历根节点
preorderTraversal(root.left); // 遍历左子树 preorderTraversal(root.right); // 遍历右子树
遍历根节点 preorderTraversal(root.left); // 遍历左子树 preorderTraversal(root.right); // 遍历右子树 } }
voidinorderTraversal(TreeNoderoot) {
if (root!=null) {
inorderTraversal(root.left); // 遍历左子树
// 遍历根节点
inorderTraversal(root.right); // 遍历右子树
}
}
publicvoidpostorderTraversal(TreeNoderoot) {
if (root!=null) {
postorderTraversal(root.left); // 遍历左子树
postorderTraversal(root.right); // 遍历右子树
// 遍历根节点
}
}
}
4、哈希表
Java 中的哈希表可以使用 HashMap 类来创建。
创建 HashMap 对象:
HashMap<Integer, String>hashMap=newHashMap<>();
哈希表的常用方法:
put(key, value):将键值对添加到哈希表中。
get(key):返回键对应的值。
remove(key):从哈希表中移除指定的键及其对应的值。
containsKey(key):判断哈希表中是否包含指定的键。
containsValue(value):判断哈希表中是否包含指定的值。
size():返回哈希表中键值对的数量。
示例:
HashMap<Integer, String>hashMap=newHashMap<>();
hashMap.put(1, "Hello");
hashMap.put(2, "World");
Stringvalue=hashMap.get(1); // 返回 "Hello"
booleancontainsKey=hashMap.containsKey(3); // 返回 false
intsize=hashMap.size(); // 返回 2
5、集合
Java 中的集合可以使用 Set 接口的实现类 HashSet 来创建。
创建 HashSet 对象:
HashSet<Integer>set=newHashSet<>();
集合的常用方法:
add(item):将元素添加到集合中。
remove(item):从集合中移除指定的元素。
contains(item):判断集合中是否包含指定的元素。
size():返回集合中元素的数量。
示例:
HashSet<Integer>set=newHashSet<>();
set.add(1);
set.add(2);
set.add(3);
booleancontainsItem=set.contains(2); // 返回 true
intsize=set.size(); // 返回 3
以上是 Java 中常见数据结构的创建与使用方法,还有其他的数据结构和用法可以在 Java 官方文档或其他参考资料中进行了解和学习。