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
  • 相关阅读:
    SQL2008还原数据库差异备份
    关于串行接口
    SQL Server 2000删除表中的重复记录
    在SQL SERVER 2005创建用户定义函数语法
    C#中的字段与属性
    对SQL数据表和数据库进行迭代操作
    第4章 最简单的C程序设计——顺序程序设计
    走进SQL Server 2005:备份与恢复功能
    ASP.NET中上传下载文件
    Sql常见面试题
  • 原文地址:https://www.cnblogs.com/zqlxtt/p/4423231.html
Copyright © 2011-2022 走看看