如何在链接列表中获取前一个元素?

时间:2014-08-05 19:38:11

标签: java linked-list

我正在使用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”对象?

3 个答案:

答案 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;
}