在java中以相反的顺序添加了ArrayList中的元素

时间:2013-02-20 19:08:04

标签: java arraylist

我得到了ArrayList:

ArrayList logs;
for(Logs log : getLogs()){           
    logs.add(log.getName();        
}

如何以相反的顺序获取此列表?

6 个答案:

答案 0 :(得分:5)

使用reverse类的Collections方法来反转列表。请注意,这会影响列表本身。

ArrayList logs = new ArrayList(); //Initialize this list or your
                                  //code won't compile.

for(Logs log : getLogs()){           
    logs.add(log.getName();        
}

Collections.reverse(logs);

如果您想要一个新列表,请创建一个新列表,使用addAll将所有元素添加到该列表中,最后反转该列表。

答案 1 :(得分:4)

for ( int i = logs.size() - 1; i >= 0; --i )
    // do something with logs.get( i )
    ;

不要浪费时间来逆转你可以按相反顺序迭代的东西。

更新:listIterator也可以按相反顺序使用,是一种更通用的解决方案:

for ( ListIterator< Logs > lit = logs.listIterator( logs.size() ); lit.hasPrevious(); )
    // do something with lit.previous()
    ;

答案 2 :(得分:3)

尝试使用add(int index, E element)

ArrayList logs;
for(Logs log : getLogs()){           
    logs.add(0,log.getName());        
}

这将始终将元素作为第一个元素插入,而不是将其附加到列表的末尾,以便反转列表。

答案 3 :(得分:2)

从Java 5开始(至少可能更早),在Collections库中支持这一点。

 Collections.reverse(logs);

答案 4 :(得分:0)

反转集合不是必需的,可能是性能灾难(取决于大小)。最自然的JDK方式是涉及listIterator

for (ListIterator<String> it = list.listIterator(list.size()); it.hasPrevious();) {
  ...
}

答案 5 :(得分:0)

/** ArrayList Elements Reverse Without Using Collections Reverse */
public static void main(String s[]) {

        ArrayList<Integer> alOrig = new ArrayList<Integer>();
        alOrig.add(210);
        alOrig.add(213);
        alOrig.add(214);
        alOrig.add(216);
        alOrig.add(217);

        System.out.println("ArrayList Elements in Normal Order");
        Iterator alOrigItr = alOrig.iterator();

        while (alOrigItr.hasNext()) {
            System.out.println("" + alOrigItr.next());
        }

        System.out.println("ArrayList Elements in Reverse Order ");

        ArrayList<Integer> alRev = new ArrayList<Integer>();

        for (int i = alOrig.size(); i > 0; i--) {
            alRev.add(alOrig.size() - i, alOrig.get(i - 1));
        }

        for (Integer alRevI : alRev) {

            System.out.println("" + alRevI);
        }

    }

}