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 ...
最新文章
- 使用Python中的Turtle库绘制简单的图形
- 运行SSIS包的几种方式
- 考oracle ocm,Oracle数据库OCM考试系列教程与总结_OCM考试实验笔记
- 深度学习(三十一)——Style Transfer
- POJ-1384 Piggy-Bank 多重背包变形
- etl报表开发是什么意思_中间表是什么?和报表有什么关系?会带来怎样的问题?又如何解决?...
- 优化了MYSQL大量写入问题,老板奖励了1000块给我
- html.textboxfor属性,label标签中的for属性与form属性
- Ubuntu 下 matplotlib 中文乱码
- python语言程序设计实践教程答案实验二_20184313 实验二《Python程序设计》实验报告...
- Flask学习笔记之:jinja2变量过滤器以及自定义过滤器
- IDEA中,更换背景颜色
- 我的世界服务器被踢会显示什么,我的世界:500人被踢,服务器“假死”,2b2t的附魔台成掉线之王...
- 十进制转换八进制代码c语言,利用栈将十进制转换为八进制(C语言)
- 新手入门matlab之线性系统频域分析
- Gooxi国产化服务器专题介绍之海光服务器
- 【2022/1/12】think-swoole使用教程
- 2018心得随想笔记
- 进口NFC,运放,时间数字转换 芯片替代
- python程序移植到linux_如何将Python自编软件装到Linux系统
热门文章
- matlab里performance,关于神经网络performance图的问题
- vs2010中svn使用教程_SVN安装以及和VS2010整合使用-阿里云开发者社区
- error C1004 发现意外的文件尾
- goland 调试运行路径
- C++调用Python实例
- FFMPEG 提取码流的基本信息
- Could not obtain transaction-synchronized Session for current thread
- Ubuntu下安装realtek的rtl8188eu网卡芯片驱动
- matlab计时,暂停
- TCP全局同步问题发生的原因