java LinkedList类使用举例
时间: 2024-06-10 22:08:45 浏览: 103
当然可以!Java中的LinkedList类是一个双向链表,可以实现在任意位置进行插入和删除操作。举个例子,如果我们要实现一个存储字符串的链表,可以这样写:
LinkedList<String> linkedList = new LinkedList<>();
linkedList.add("Hello");
linkedList.add("World");
linkedList.add(1, "Java");
//输出链表元素
for (String str : linkedList) {
System.out.println(str);
}
//移除第一个元素
linkedList.removeFirst();
//输出链表元素
for (String str : linkedList) {
System.out.println(str);
}
这段代码中,我们首先创建了一个LinkedList对象,并向其中添加了三个元素。那么链表中的元素就是"Hello"、"Java"、"World"。我们使用了add方法来添加元素,第一个元素会添加到链表的尾部,第一个参数指定要添加到的索引位置。接下来我们使用了一个for-each循环来输出链表中元素的值。
在移除链表元素时,LinkedList还提供了一些其他的方法,例如removeLast、remove、removeFirstOccurrence等。移除元素后,我们再次使用for-each循环输出列表元素的值。
相关问题
LinkedList.clone() 举例
`LinkedList.clone()` 方法用于创建一个新的 `LinkedList`,它的内容与当前列表完全相同。这个方法是线程安全的,返回的是一个新的 `LinkedList` 对象,而不是原始列表的一个浅拷贝,这意味着新列表包含原列表中所有节点的深复制。
例如,假设我们有一个包含一些元素的 LinkedList:
```java
LinkedList<String> originalList = new LinkedList<>();
originalList.add("Element1");
originalList.add("Element2");
originalList.add("Element3");
// 创建原列表的深拷贝
LinkedList<String> clonedList = originalList.clone();
System.out.println(originalList); // 输出: [Element1, Element2, Element3]
System.out.println(clonedList); // 输出: [Element1, Element2, Element3]
// 修改原列表不影响克隆
originalList.removeFirst(); // 删除第一个元素
System.out.println(clonedList); // 输出: [Element2, Element3]
```
在这个例子中,`clonedList` 中的元素保持不变,因为它们是从原始列表深度复制过来的。
java 二叉树层序遍历举例最简单
在Java中,层序遍历(也称为广度优先遍历)二叉树是一个常见的操作,通常使用队列数据结构来辅助实现。下面是一个简单的例子:
```java
import java.util.LinkedList;
import java.util.Queue;
class TreeNode {
int val;
TreeNode left;
TreeNode right;
TreeNode(int val) { this.val = val; }
}
public class LevelOrderTraversalExample {
public void levelOrder(TreeNode root) {
if (root == null) return;
// 使用队列存储每一层的节点
Queue<TreeNode> queue = new LinkedList<>();
queue.offer(root); // 将根节点入队
while (!queue.isEmpty()) {
// 每一层的节点都出队并打印
int size = queue.size();
for (int i = 0; i < size; i++) {
TreeNode node = queue.poll();
System.out.print(node.val + " ");
// 如果有左孩子和右孩子,分别加入队列
if (node.left != null) queue.offer(node.left);
if (node.right != null) queue.offer(node.right);
}
System.out.println(); // 每层结束后换行
}
}
}
```
这个例子中,我们首先检查根节点是否存在,然后初始化一个队列并将根节点放入。接下来,我们进入循环,直到队列为空。在每一轮循环中,我们先打印当前层的所有节点值,然后将他们的左右子节点(如果存在的话)依次加入队列,以便下一轮处理。
阅读全文
相关推荐
















