我使用節點創建了自己的鏈表,但我幾乎沒有什么方法可以做。
主要方法:
//List<Person> females = peopleFromWarsaw.getWithFilter(p -> p.getName().endsWith("a"));
// Dont know how to implements this methods.
// ObjectContainer.removeIf(p -> p.getAge() > 50);
// peopleFromWarsaw.storeToFile("youngPeopleFromWarsaw.txt",
// p -> p.getAge() < 30, p -> p.getName() ";" p.getAge() ";" p.getCity());
在乞討時,我制作了一個鏈接串列并嘗試從串列中列印元素但不起作用。起初看起來它沒有 toString 方法,但類 Person 有 toString。我猜程式需要節點,但我想列印物件。也許你可以看到代碼有什么問題,基本上物件容器中的節點和方法都很好。
其次,我在 main (getWithFilter、removeIf 和 storeToFile) 中實作方法時遇到問題無論我如何在 ObjectContainer 中撰寫方法,intelij 總是告訴我不能使用 lambda 和下劃線 p.getName (p -> p.getName().endsWith (“一個”)); 在 Person 類中,我有帶有欄位名稱、年齡的 getter 和 setter。
也許有人可以解釋如何正確撰寫這種方法?
public class ObjectContainer<T> {
private Node head;
private Node tail;
private final Predicate<T> predicate;
public ObjectContainer(Predicate<T> predicate) {
this.predicate = predicate;
}
static class Node {
private Object object;
private Node next;
Node(Object object) {
this.object = object;
}
}
public void add(T object) {
if (!predicate.test(object)) {
throw new IllegalArgumentException("Element can not be added");
}
Node newNode = new Node(object);
if (head == null) {
head = newNode;
tail = newNode;
} else {
tail.next = newNode;
tail = newNode;
}
}
public int size() {
int count = 0;
Node current = head;
while (current != null) {
count ;
current = current.next;
}
return count;
}
public void push(T new_data) {
Node new_node = new Node(new_data);
new_node.next = head;
head = new_node;
}
public void insertAfter(Node prev_node, T new_data) {
if (prev_node == null) {
System.out.println("The given previous node cannot be null");
return;
}
Node new_node = new Node(new_data);
new_node.next = prev_node.next;
prev_node.next = new_node;
}
public void append(T new_data) {
Node new_node = new Node(new_data);
if (head == null) {
head = new Node(new_data);
return;
}
new_node.next = null;
Node last = head;
while (last.next != null)
last = last.next;
last.next = new_node;
return;
}
public void printList() {
Node tnode = head;
while (tnode != null) {
tnode = tnode.next;
System.out.println(tnode);
}
}
}
uj5u.com熱心網友回復:
可能您不想列印節點,而是其中包含的物件。此外,您還想列印第一個物件。那是
public void printList() {
Node tnode = head;
while (tnode != null) {
System.out.println(tnode.object);
tnode = tnode.next;
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/511340.html
上一篇:C 泛型加法
下一篇:F#泛型型別限制為特定型別?
