java for index_Java增强for循环中获取index
前提测试数据:
String[] data = new String[]{"rensanning001", "rensanning002", "rensanning003"};
List dataList = Arrays.asList(data);
普通的For循环:
for (int i = 0; i < dataList.size(); i++) {
System.out.println(i + ":" + dataList.get(i));
}
增强For循环(获取index需要定义额外的变量):
int i = 0;
for (String elem : dataList) {
System.out.println(i + ":" + elem);
i++;
}
自定义静态方法实现带index的循环:
for (Indexer elem : ExtFor1.loop(dataList)) {
System.out.println(elem.index() + ":" + elem.value());
}
public class ExtFor1 {
public static Iterable> loop(final Iterable list) {
return new Iterable>() {
@Override
public Iterator> iterator() {
return new Iterator>() {
private int counter = 0;
private Iterator iterator = list.iterator();
@Override
public boolean hasNext() {
return iterator.hasNext();
}
@Override
public Indexer next() {
Indexer elem = new Indexer(counter++, iterator.next());
return elem;
}
@Override
public void remove() {
throw new RuntimeException();
}
};
}
};
}
}
扩展Iterable实现带index的循环:
for (Indexer elem : ExtFor2.loop(dataList)) {
System.out.println(elem.index() + ":" + elem.value());
}
public class ExtFor2 implements Iterable> {
private Iterator iterator;
private ExtFor2(Iterable iter) {
this.iterator = iter.iterator();
}
public static ExtFor2 loop(Iterable iter) {
return new ExtFor2(iter);
}
@Override
public Iterator> iterator() {
return new Iterator>() {
private int counter = 0;
@Override
public boolean hasNext() {
return iterator.hasNext();
}
@Override
public Indexer next() {
Indexer elem = new Indexer(counter++, iterator.next());
return elem;
}
@Override
public void remove() {
throw new RuntimeException();
}
};
}
}
jquery风格的for循环:
For.each(dataList, new For.Function() {
public void execute(int index, String elem) {
System.out.println(index + ":" + elem);
}
});
public class For {
public static void each(List list, Function function) {
int length = list.size();
for (int index = 0; index < length; index++) {
function.execute(index, list.get(index));
}
}
public static interface Function {
public void execute(int index, T obj);
}
}
public class Indexer {
private final int index;
private final T value;
public Indexer(int index, T value) {
this.index = index;
this.value = value;
}
public int index() {
return this.index;
}
public T value() {
return this.value;
}
}
java for index_Java增强for循环中获取index相关推荐
- java 普通类request_[Java教程]spring在普通类中获取session和request
[Java教程]spring在普通类中获取session和request 0 2014-08-12 08:01:13 在使用spring时,经常需要在普通类中获取session,request等对像. ...
- mysql for 循环删除_Java增强for循环中删除元素抛异常问题
前言 最近突然想起刚毕业那会找工作时面试被问了个这样的问题.就是"使用增强for循环遍历ArrayList(List集合)时删除其中的元素是否会出现异常?".说实话当时真把我愣住了 ...
- java 从一个容器获取对象,Java 如何实现从spring容器中获取注入的bean对象
Java 如何实现从spring容器中获取注入的bean对象 发布时间:2020-11-03 15:27:37 来源:亿速云 阅读:70 作者:Leah 这期内容当中小编将会给大家带来有关Java 如 ...
- python遍历数组获取下标_如何在循环中获取索引(数组下标)
如何获取列表的索引值呢? ints = [8, 23, 45, 12, 78] 如果像C或者PHP那样可以加入一个状态变量,这里使用Python最好的选择就是用内建函数enumeratefor i i ...
- Java Hashmap:如何从价值中获取关键?
如果我的值是"foo" ,并且ftw.containsValue("foo")返回true的HashMap<String> ftw ,如何获得相应的 ...
- java html2text_java-如何在html / text内容中获取文本?
大家好 我有html / text之类的东西: first text one: second texttwo: third textthree: fourth textfive: fifth text ...
- 在'for'循环中获取索引
ints = [8, 23, 45, 12, 78] 当使用循环遍历它时,在这种情况下如何访问循环索引,从1到5? 最普遍的办法是设置索引变量(通常在C或PHP等语言中使用),但这被认为是非pytho ...
- java 反射 类名_java – 从反射中获取字段的类名
我围着这个转了一圈. 我有一个人类,例如 public class Person { String name = ""; } 现在,我想反思这个类实例&弄清楚什么类名称声明 ...
- java过滤lsit重复_java 8 中获取List结合中过滤后的重复数据
//excel文件上传数据 List list = importResult.getList(); if (list.size() >200) { String error = Constant ...
最新文章
- 向量空间和计算机科学与技术,向量空间
- 圣思园java se培训总结(82-)(观察者设计模式)
- SQL case when then 的用法
- 关于指针,可能是网上最详细的讲解了
- elastichd的使用教程_ElasticSearch可视化工具ElasticHD安装
- 博文视点OpenParty第11期“世界黑客大会那些事儿”成功举办
- android mvp模式到底好,Android中MVP设计模式
- 直播http-flv原理
- hilbert谱 matlab,转 matlab 信号处理——Hilbert变换及谱分析
- windows10 C:\windows\system32\winlogon.exe自动关机
- python遍历文本文件统计字符个数_用python获取txt文件中关键字的数量
- java spel_Java spring SPEL表达式注入
- 存储虚拟化的特性和优势
- 小企业仓库管理软件设计开发
- 【转载】双微信分享发生TransactionTooLargeException 异常记录
- 有些程序员经常把“删库跑路”挂在嘴边,如果真的“删库跑路”需要负刑事责任吗?
- Oracle DBA技术培训
- GoogleCode中git push密码错误提示解决方案(Invalid username/password)
- 希特管理学(希特)【内容摘要】
- RecyclerView 梳理:点击长按事件、分割线、拖曳排序、滑动删除
热门文章
- mysql容器重启数据是否丢失_docker重启后数据是否会丢失
- mysql backup_Mysqlbackup 备份详解(mysql官方备份工具)
- Oracle的left join中on和where的区别
- MVC与MVP简单对比
- hi35 web服务器
- Python3 configparser 中文乱码
- pytorch 按维取数据
- /usr/bin/time -v 显示内容含义
- php插入数据进度条,PHP导入进度条类
- java 文档注释不显示泛型_使用Swagger进行说明 - 使用泛型时无法生成文档资源模型...