【问题标题】:How we get the List objects in backward direction?我们如何反向获取 List 对象?
【发布时间】:2011-06-02 04:53:56
【问题描述】:

您好,我正在获取包含表的 pojo 类对象的列表对象。就我而言,我必须以相反的顺序显示表格数据。意思是,例如 当我最近添加时,我正在向数据库中的特定表中添加一些行,数据存储在表中的最后一行(在数据库中)。这里我必须在我的jsp页面中以相反的顺序显示表格的全部内容,这意味着我最近插入的内容必须在我的jsp页面中显示第一行。

我的代码是这样的,

List lst = tabledate.getAllData();//return List<Table> Object
Iterator it = lst.iterator();
MyTable mt = new MyTable();//pojo class
while(it.hasNext())
{
     mt=(MyTable)it.next();
     //getting data from getters.
     System.out.println(mt.getxxx());
     System.out.println(mt.getxxx());
     System.out.println(mt.getxxx());
     System.out.println(mt.getxxx());
}

【问题讨论】:

    标签: java list iterator


    【解决方案1】:

    在这种情况下,您不能使用迭代器。您将需要使用基于索引的访问:

    int size = lst.size(); for (int i=size - 1; i >= 0; i --) { MyTable mt = (MyTable)lst.get(i); …… }

    顺便说一句:没有必要在循环之前创建一个新的 MyTable() 。这是一个将立即被丢弃且没有任何用途的实例。

    【讨论】:

    • 如果是 LinkedList,这将花费 O(n^2) 时间而不是 O(n)
    • 同意。这就是为什么ListIterator 会更好;)
    【解决方案2】:

    使用ListIterator 使用hasPrevious()previous() 遍历列表:

    ListIterator it = lst.listIterator(lst.size());
    while(it.hasPrevious()) {
        System.out.println(it.previous());
    }
    

    【讨论】:

    • @a_horse 我喜欢 OP 选择“更糟糕”的答案。那好吧。 :-/
    • 嗯,你的答案是错误的。它应该说 ListIterator it = lst.listIterator(lst.size());
    • @adamax 当然,我怎么能错过!感谢您指出。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-01-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-03
    • 1970-01-01
    相关资源
    最近更新 更多