У меня есть двойной список в моем случае. И я хочу найти элемент max и min. Поэтому я хочу использовать Коллекции, чтобы найти его. Вот мой код ниже для узла первый:Как найти элемент max/min связанного списка
public class Node<T> {
Node<T> prev;
Node<T> next;
T data;
public Node(T _data)
{
data = _data;
prev = null;
next = null;
}
public Node(T _data, Node<T> _prev, Node<T> _next)
{
data = _data;
prev = _prev;
next = _next;
}
T getData()
{
return data;
}
public void setNext(Node<T> _next)
{
next = _next;
}
public void setPrev(Node<T> _prev)
{
prev = _prev;
}
public Node<T> getNext()
{
return next;
}
public Node<T> getPrev()
{
return prev;
}
}
А вот мой двусвязный класс List:
public class DoublyLinkedList<T> {
private Node<T> head;
private Node<T> tail;
int listCount = 0;
public void traverseF()
{
Node<T> temp = head;
while(temp != null)
{
System.out.print(temp.getData() + " ");
temp = temp.getNext();
}
}
public void traverseB()
{
Node<T> temp = tail;
while(temp != null)
{
System.out.print(temp.getData() + " ");
temp = temp.getPrev();
}
}
public void insertFirst(T data)
{
Node<T> temp = new Node<T>(data);
if(head == null)
{
head = temp;
tail = temp;
temp.setNext(null);
temp.setPrev(null);
}
else
{
temp.setNext(head);
head.setPrev(temp);
head = temp;
}
}
}
Итак, мой основной код:
import java.util.Collections;
public class glavna {
public static void main(String[] args) {
DoublyLinkedList<Integer> DLL = new DoublyLinkedList<Integer>();
DLL.insertFirst(32);
DLL.insertFirst(22);
DLL.insertFirst(55);
DLL.insertFirst(10);
DLL.traverseF();
Integer max = Collections.max(DLL);
}
}
Как именно я вызовите метод Collections.max или Collections.min? Разве список не нужен только для поиска элементов max/min?
public T getMin()
{
Node<T> temp = head;
T min = head.getData();
while(temp.getNext() != null)
{
if(temp.getData() < min) // error
{
//min = temp.getData();
}
}
}
Ваш 'DoublyLinkedList' должен реализовать интерфейс' Collection', т. Е. 'Public class DoublyLinkedList реализует Collection'. Затем вы сможете вызвать 'Collections.max (DLL)' – kiruwka
Другой альтернативой реализации интерфейса Collection является отслеживание текущих min и max в вашем методе 'insertFirst()'. Затем просто создайте методы getMin() 'и' getMax() ', чтобы вернуть минимальные и максимальные значения в O (1). –
@kiruwka Что такое интерфейс «Collection»? Есть ли какой-нибудь пример, как я могу его реализовать? Благодарю. – user12831231