前提测试数据:

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相关推荐

  1. java 普通类request_[Java教程]spring在普通类中获取session和request

    [Java教程]spring在普通类中获取session和request 0 2014-08-12 08:01:13 在使用spring时,经常需要在普通类中获取session,request等对像. ...

  2. mysql for 循环删除_Java增强for循环中删除元素抛异常问题

    前言 最近突然想起刚毕业那会找工作时面试被问了个这样的问题.就是"使用增强for循环遍历ArrayList(List集合)时删除其中的元素是否会出现异常?".说实话当时真把我愣住了 ...

  3. java 从一个容器获取对象,Java 如何实现从spring容器中获取注入的bean对象

    Java 如何实现从spring容器中获取注入的bean对象 发布时间:2020-11-03 15:27:37 来源:亿速云 阅读:70 作者:Leah 这期内容当中小编将会给大家带来有关Java 如 ...

  4. python遍历数组获取下标_如何在循环中获取索引(数组下标)

    如何获取列表的索引值呢? ints = [8, 23, 45, 12, 78] 如果像C或者PHP那样可以加入一个状态变量,这里使用Python最好的选择就是用内建函数enumeratefor i i ...

  5. Java Hashmap:如何从价值中获取关键?

    如果我的值是"foo" ,并且ftw.containsValue("foo")返回true的HashMap<String> ftw ,如何获得相应的 ...

  6. java html2text_java-如何在html / text内容中获取文本?

    大家好 我有html / text之类的东西: first text one: second texttwo: third textthree: fourth textfive: fifth text ...

  7. 在'for'循环中获取索引

    ints = [8, 23, 45, 12, 78] 当使用循环遍历它时,在这种情况下如何访问循环索引,从1到5? 最普遍的办法是设置索引变量(通常在C或PHP等语言中使用),但这被认为是非pytho ...

  8. java 反射 类名_java – 从反射中获取字段的类名

    我围着这个转了一圈. 我有一个人类,例如 public class Person { String name = ""; } 现在,我想反思这个类实例&弄清楚什么类名称声明 ...

  9. java过滤lsit重复_java 8 中获取List结合中过滤后的重复数据

    //excel文件上传数据 List list = importResult.getList(); if (list.size() >200) { String error = Constant ...

最新文章

  1. 使用Python中的Turtle库绘制简单的图形
  2. 运行SSIS包的几种方式
  3. 考oracle ocm,Oracle数据库OCM考试系列教程与总结_OCM考试实验笔记
  4. 深度学习(三十一)——Style Transfer
  5. POJ-1384 Piggy-Bank 多重背包变形
  6. etl报表开发是什么意思_中间表是什么?和报表有什么关系?会带来怎样的问题?又如何解决?...
  7. 优化了MYSQL大量写入问题,老板奖励了1000块给我
  8. html.textboxfor属性,label标签中的for属性与form属性
  9. Ubuntu 下 matplotlib 中文乱码
  10. python语言程序设计实践教程答案实验二_20184313 实验二《Python程序设计》实验报告...
  11. Flask学习笔记之:jinja2变量过滤器以及自定义过滤器
  12. IDEA中,更换背景颜色
  13. 我的世界服务器被踢会显示什么,我的世界:500人被踢,服务器“假死”,2b2t的附魔台成掉线之王...
  14. 十进制转换八进制代码c语言,利用栈将十进制转换为八进制(C语言)
  15. 新手入门matlab之线性系统频域分析
  16. Gooxi国产化服务器专题介绍之海光服务器
  17. 【2022/1/12】think-swoole使用教程
  18. 2018心得随想笔记
  19. 进口NFC,运放,时间数字转换 芯片替代
  20. python程序移植到linux_如何将Python自编软件装到Linux系统

热门文章

  1. matlab里performance,关于神经网络performance图的问题
  2. vs2010中svn使用教程_SVN安装以及和VS2010整合使用-阿里云开发者社区
  3. error C1004 发现意外的文件尾
  4. goland 调试运行路径
  5. C++调用Python实例
  6. FFMPEG 提取码流的基本信息
  7. Could not obtain transaction-synchronized Session for current thread
  8. Ubuntu下安装realtek的rtl8188eu网卡芯片驱动
  9. matlab计时,暂停
  10. TCP全局同步问题发生的原因