zoukankan      html  css  js  c++  java
  • java倒序输出List

    先贴代码

    package com.tsubasa.collection;
    
    import java.util.ArrayList;
    import java.util.Arrays;
    import java.util.Collection;
    import java.util.Iterator;
    
    public class ReversibleArrayList<T> extends ArrayList<T>{
    
        public ReversibleArrayList(Collection<T> c){
            super(c) ;
        }
    
        public Iterable<T> reversed(){
            return new Iterable<T>(){
                @Override
                public Iterator<T> iterator() {
                    return new Iterator<T>(){
                        int current = size() -1 ;
                        @Override
                        public boolean hasNext() {
                           return current > -1 ;
                        }
                        @Override
                        public T next() {
                            return get(current--);
                        }
                        @Override
                        public void remove() {
                            throw new UnsupportedOperationException() ;
                        }
                    } ;
                }
                
            } ;
        }
        
        public static void main(String[] args) {
            ReversibleArrayList<String> list = 
                    new ReversibleArrayList<String>(
                            Arrays.asList("to be or not to be it is a question".split(" "))) ;
            
            for(String str : list){
                System.out.print(str + " ");
            }
            System.out.println();
            for(String str :list.reversed()){
                System.out.print(str + " ");
            }
        }
    }

    运行结果:

    to be or not to be it is a question
    question a is it be to not or be to

    上面这种解决方案使用了所谓的适配器方法适配器部分来自于设计模式,因为我们这里使用foreach遍历list,所以我们必须提供满足foreach的接口。

    因为我们的ArrayList已经实现了Iterable接口,所以下面有两个选择来实现倒序输出:

    1.覆盖ArrayList原有的iterator方法

    2.自己在生产一个iterator接口。

    通过上面的代码,显然这里我们选择了第二种方法。

    博客新地址www.zqlite.com
  • 相关阅读:
    HDU1312 ZOJ2165 Red and Black
    HDU1312 ZOJ2165 Red and Black
    HDU1181 变形课【DFS】
    codevs1017 乘积最大
    codevs1220 数字三角形
    codevs1169 传纸条
    codevs1219 骑士游历
    codevs1010 过河卒
    codevs1166 矩阵取数游戏
    codevs1154 能量项链
  • 原文地址:https://www.cnblogs.com/zqlxtt/p/4423231.html
Copyright © 2011-2022 走看看