java倒序输出List
2024-10-21 11:53:43
先贴代码
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接口。
通过上面的代码,显然这里我们选择了第二种方法。
最新文章
- Java初识
- Hmmer安装与使用
- git——学习笔记(二)远程仓库
- C#导出
- oracle审计
- CAGradientLayer实现色差动画
- poj 1185 火炮 (减少国家DP)
- 原生AJAX基础讲解及兼容处理
- C# 根据年、月、周、星期获得日期等
- Alpha第六天
- Redis之实战篇(与Mybatis整合)
- Python操作HBase之happybase
- Android框架式编程之RxJava(一):HelloWorld
- 在docker中运行mariadb程序
- SQL-56 获取所有员工的emp_no、部门编号dept_no以及对应的bonus类型btype和recevied,没有分配具体的员工不显示
- setCapture 使用方法
- vue的地图插件amap
- [Oracle]数据库的Control File 取Dump后的样例
- Git for Windows之推送本地版本库到远程仓库
- 快速排序—三路快排 vs 双基准
热门文章
- 如何优雅的使用RabbitMQ(转载)
- 《C++编程思想》(第二版)第3章 C++中的C(笔记、习题及答案)(二)
- 点滴积累【JS】---JS小功能(setInterval实现图片效果显示时间)
- 深入理解C#学习笔记之走出误区
- Request介绍及演示样例 PART1
- Atitit.jpg png格式差别以及解决jpg图片不显示的问题
- 李洪强详细介绍SDWebImage
- eclipse导入svn中的maven工程项目
- linux命令之高级使用 find
- 27. Retrofit2 -- How to Use Dynamic Urls for Requests