1 使用匿名内部类和lambda实现外部比较器,保存数据 2 自己编写代码默认LinekedList容器,实现双链表头部插入和变量所有元素
时间: 2024-09-06 22:07:34 浏览: 63
1. 使用匿名内部类和lambda表达式创建自定义排序器通常是在需要临时、简单地改变List中元素排序规则的时候。例如,在Java中,如果你想对一个List按照某个属性进行升序或降序排序,可以这样做:
```java
import java.util.Arrays;
import java.util.Comparator;
import java.util.List;
List<String> list = Arrays.asList("banana", "apple", "orange");
list.sort(Comparator.comparing(String::length)); // 按长度升序排列
```
这里,`Comparator.comparing(String::length)`就是一个匿名内部类,它表示了一个基于字符串长度的比较规则。
对于lambda表达式,语法更简洁,上面的代码可以写作:
```java
list.sort((a, b) -> a.length() - b.length());
```
这同样实现了按长度排序,只是形式上更紧凑。
2. 如果你想自己编写一个简单的双向链表(DoubleLinkedList),并且实现头部插入(insertAtHead)以及遍历所有元素的功能,首先需要定义节点类和链表类:
```java
// 节点类
class Node {
String data;
Node prev;
Node next;
public Node(String data) {
this.data = data;
}
}
// 双向链表类
public class DoubleLinkedList {
private Node head;
private Node tail;
// 插入元素到头部
public void insertAtHead(String data) {
Node newNode = new Node(data);
if (head == null) {
head = newNode;
tail = newNode;
} else {
newNode.next = head;
head.prev = newNode;
head = newNode;
}
}
// 遍历所有元素
public void traverse() {
Node current = head;
while (current != null) {
System.out.print(current.data + " ");
current = current.next;
}
}
}
```
你可以通过创建一个`DoubleLinkedList`实例并调用`insertAtHead`和`traverse`方法来操作这个链表。
阅读全文