前提测试数据:

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. 向量空间和计算机科学与技术,向量空间
  2. 圣思园java se培训总结(82-)(观察者设计模式)
  3. SQL case when then 的用法
  4. 关于指针,可能是网上最详细的讲解了
  5. elastichd的使用教程_ElasticSearch可视化工具ElasticHD安装
  6. 博文视点OpenParty第11期“世界黑客大会那些事儿”成功举办
  7. android mvp模式到底好,Android中MVP设计模式
  8. 直播http-flv原理
  9. hilbert谱 matlab,转 matlab 信号处理——Hilbert变换及谱分析
  10. windows10 C:\windows\system32\winlogon.exe自动关机
  11. python遍历文本文件统计字符个数_用python获取txt文件中关键字的数量
  12. java spel_Java spring SPEL表达式注入
  13. 存储虚拟化的特性和优势
  14. 小企业仓库管理软件设计开发
  15. 【转载】双微信分享发生TransactionTooLargeException 异常记录
  16. 有些程序员经常把“删库跑路”挂在嘴边,如果真的“删库跑路”需要负刑事责任吗?
  17. Oracle DBA技术培训
  18. GoogleCode中git push密码错误提示解决方案(Invalid username/password)
  19. 希特管理学(希特)【内容摘要】
  20. RecyclerView 梳理:点击长按事件、分割线、拖曳排序、滑动删除

热门文章

  1. mysql容器重启数据是否丢失_docker重启后数据是否会丢失
  2. mysql backup_Mysqlbackup 备份详解(mysql官方备份工具)
  3. Oracle的left join中on和where的区别
  4. MVC与MVP简单对比
  5. hi35 web服务器
  6. Python3 configparser 中文乱码
  7. pytorch 按维取数据
  8. /usr/bin/time -v 显示内容含义
  9. php插入数据进度条,PHP导入进度条类
  10. java 文档注释不显示泛型_使用Swagger进行说明 - 使用泛型时无法生成文档资源模型...