我正在使用LinkedList
,我想获得上一个(和下一个)元素,但不知道如何处理它。
我的链接列表:
LinkedList<Transaction> transactions = transactionRepository.findAll();
我正在寻找此交易:
Transaction targetTransaction = new Transaction("admin", new Date(), 5);
我想做什么:
for (Transaction transaction : transactions) {
if (transaction.equals(targetTransaction)) {
System.out.println("Previous transaction: " + transaction.getPrev());
}
}
transaction.getPrev()
部分不起作用,因为我的Transaction对象没有这样的方法。
问题:如何从LinkedList中正确获取“previous”对象?
答案 0 :(得分:14)
增强型for
循环在幕后使用Iterator
,此界面不提供任何方法转到上一个元素。请改用LinkedList#listIterator
:
ListIterator<Transaction> li = transactions.listIterator(0);
while (li.hasNext()) {
//your logic goes here
//if you need to go to the previous place
if (li.hasPrevious()) {
li.previous();
//further logic here...
}
}
答案 1 :(得分:1)
在浏览列表时跟踪上一个Transaction
。
Transaction prev = null;
for (Transaction transaction : transactions) {
if (transaction.equals(targetTransaction)) {
System.out.println("Previous transaction: " + (prev = null ? "[none]" : prev));
}
prev = transaction;
}
答案 2 :(得分:1)
跟踪最后一个元素是手动的。
Transaction last = null;
for (Transaction transaction : transactions) {
if (transaction.equals(targetTransaction)) {
System.out.println("Previous transaction: " + last);
}
last = transaction;
}