前提测试数据:
String[] data = new String[]{"rensanning001", "rensanning002", "rensanning003"};
List<String> 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<String> elem : ExtFor1.loop(dataList)) {
System.out.println(elem.index() + ":" + elem.value());
}
public class ExtFor1 {
public static <T> Iterable<Indexer<T>> loop(final Iterable<T> list) {
return new Iterable<Indexer<T>>() {
@Override
public Iterator<Indexer<T>> iterator() {
return new Iterator<Indexer<T>>() {
private int counter = 0;
private Iterator<T> iterator = list.iterator();
@Override
public boolean hasNext() {
return iterator.hasNext();
}
@Override
public Indexer<T> next() {
Indexer<T> elem = new Indexer<T>(counter++, iterator.next());
return elem;
}
@Override
public void remove() {
throw new RuntimeException();
}
};
}
};
}
}
扩展Iterable实现带index的循环:
for (Indexer<String> elem : ExtFor2.loop(dataList)) {
System.out.println(elem.index() + ":" + elem.value());
}
public class ExtFor2<T> implements Iterable<Indexer<T>> {
private Iterator<T> iterator;
private ExtFor2(Iterable<T> iter) {
this.iterator = iter.iterator();
}
public static <T> ExtFor2<T> loop(Iterable<T> iter) {
return new ExtFor2<T>(iter);
}
@Override
public Iterator<Indexer<T>> iterator() {
return new Iterator<Indexer<T>>() {
private int counter = 0;
@Override
public boolean hasNext() {
return iterator.hasNext();
}
@Override
public Indexer<T> next() {
Indexer<T> elem = new Indexer<T>(counter++, iterator.next());
return elem;
}
@Override
public void remove() {
throw new RuntimeException();
}
};
}
}
jquery风格的for循环:
For.each(dataList, new For.Function<String>() {
public void execute(int index, String elem) {
System.out.println(index + ":" + elem);
}
});
public class For {
public static <T> void each(List<T> list, Function<T> function) {
int length = list.size();
for (int index = 0; index < length; index++) {
function.execute(index, list.get(index));
}
}
public static interface Function<T> {
public void execute(int index, T obj);
}
}
public class Indexer<T> {
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;
}
}
分享到:
相关推荐
除了使用`get()`方法之外,我们还可以使用迭代器(`Iterator`)或增强型`for`循环(也称为“foreach”循环)来遍历`List`中的元素。这两种方法都避免了直接使用索引,这可以减少潜在的数组越界错误。 ##### 使用`...
在这个例子中,我们首先创建了一个包含三个字符串元素的向量,然后使用增强的for循环(foreach)遍历向量,通过调用`get()`方法获取每个元素的值,并打印出索引和值。 除了使用迭代器,还可以使用传统的索引访问...
此外,Java 5引入了增强型for循环(也称为foreach循环),简化了遍历数组和集合的过程: ```java int[] arr = {1, 2, 3, 4}; for(int element : arr) { System.out.println(element); } ``` Java中的循环控制...
遍历列表,通常使用增强for循环(foreach)或者迭代器: ```java // 使用增强for循环 for (String element : myList) { System.out.println(element); } // 使用迭代器 Iterator<String> iterator = myList....
使用for循环或增强for循环遍历字符串长度。 3. 在循环中,通过`charAt(index)`获取当前索引对应的字符。 4. 检查这个字符是否已经在HashSet中。如果是,说明是重复字符,可以进行相应处理,比如统计次数或打印...
7. **字符串处理**:String类在Java中是不可变的,提供了丰富的字符串操作方法,如concat、substring、indexOf、replace等。 8. **IO流**:Java的I/O流处理涵盖了文件读写、网络通信等多种场景,包括字节流和字符流...
1. **Java语法**:包括基本数据类型、变量、运算符、流程控制(如if语句、for循环、while循环)、方法定义和调用。 2. **面向对象编程**:封装、继承、多态等概念,以及类、对象、接口和抽象类的使用。 3. **异常...
1. **Java基础**:包括基本语法、数据类型、变量、运算符、控制结构(如if语句、for循环、while循环)、方法定义和调用等。 2. **面向对象编程**:讲解类、对象、封装、继承、多态等面向对象的基本概念,以及如何在...
Java 5 引入了增强的 for 循环,这极大地简化了遍历集合的过程。在此之前,开发人员需要手动获取 Iterator 并使用 `next()` 方法来迭代集合中的每个元素。而现在,只需一个简单的 for-each 循环即可遍历任何实现了 `...
在Java中,静态导入、自动拆装箱和增强for循环是提高代码可读性和简洁性的现代特性。反射则进一步扩展了Java的灵活性,使开发者能够在运行时检查和修改程序的行为。这些技术的结合使用,能够帮助我们编写更加健壮、...
3. **基础语法**:掌握Java的基础语法,包括数据类型(如整型、浮点型、字符型和布尔型)、变量、常量、运算符、流程控制语句(如if条件语句、switch选择语句、for、while循环等)。 4. **类与对象**:理解面向对象...
可以通过迭代器(Iterator)或增强for循环遍历ArrayList中的所有元素。 ```java // 使用迭代器 Iterator<String> iterator = list.iterator(); while (iterator.hasNext()) { System.out.println(iterator.next())...
- 增强for循环遍历 - 迭代器遍历 - 列表迭代器(ListIterator)遍历,允许在遍历过程中修改集合 2. **Set集合** - **特点**:Set是无序的,不允许元素重复,没有索引。 - **子类**:HashSet和TreeSet - **...
- 增强 for 循环遍历:通过 `for (Map.Entry, Value> entry : map.entrySet())` 进行遍历。 - values 方法遍历:通过 `map.values()` 获取所有值并遍历。 9. **List 集合特性**: ArrayList 是基于数组实现的 ...
12. **集合框架的高级用法**:TreeSet、TreeMap的排序原理,Comparator和Comparable接口的实现,以及集合的遍历方式(迭代器与增强for循环)。 以上知识点涵盖了Java编程的基础到进阶内容,通过解答这些题目,初学...
Java 5引入了增强的for循环(也称为foreach循环),使得遍历Map变得非常简洁。通过`Map.entrySet()`方法,我们可以获取到Map的所有Entry对象的集合,然后使用for-each循环来遍历每个Entry,如下所示: ```java ...
- Java5引入了泛型和增强的for循环,使数组操作更加方便。 #### 三、面向对象(1) 1. **什么叫面向对象?** - 面向对象编程(OOP)是一种编程范式,通过使用“对象”来设计软件和实现其功能。 2. **类** - 类...
4. **控制流程**:Java提供了多种控制流程结构,如条件语句(if-else,switch-case)、循环(for,while,do-while)和跳转语句(break,continue)。 5. **异常处理**:Java通过try-catch-finally块进行异常处理,...