package containers; import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; import java.util.Iterator; /** * 利用迭代器实现反转操作 * * @author liu yuning * * */ public class Reverse { @SuppressWarnings("serial") private static class ReverseCollection extends ArrayList { public ReverseCollection(Collection collection) { super(collection); } public Iterable reverse() { return new Iterable() { @Override public Iterator iterator() { return new Iterator() { int current = size() - 1; @Override public boolean hasNext() { return current > -1; } @Override public T next() { return get(current--); } }; } }; } } public static String reverseWords(String s) { ReverseCollection reverseCollection = new ReverseCollection( Arrays.asList(s.split(" "))); StringBuilder stringBuilder = new StringBuilder(); for (String word : reverseCollection.reverse()) { stringBuilder.append(word + " "); } return stringBuilder.toString().trim(); } public static void main(String[] args) { String s = "This is a test for reversing words"; System.out.println(reverseWords(s)); } }