我是靠谱客的博主 忐忑枕头,最近开发中收集的这篇文章主要介绍java的foreach语法详解,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

java的Collection下的类可以使用foreach语句来遍历,非常方便,我们通过Iterable接口可以按照我们的需求实现foreach遍历

如果一个类里用private修饰了一个集合类,以避免该集合了属性被修改,我们可以如下,遍历该集合类的属性

public class Test {
private List list;
public Test(int n) {
list = new ArrayList();
for (int i = 0; i < n; i++) {
list.add(i);
}
}
public Iterable<Integer> iterable() {
return list;
}
public static void main(String[] args) {
Test test = new Test(10);
for (int i : test.iterable()) {
System.out.print(i);
}
}
}

上述中我们直接使用List的迭代器,但是如果是数组的话,我们可以把元素给List再进行迭代

public class Test1 {
private int[] ints;
public Test1(int n) {
ints = new int[n];
for (int i = 0; i < n; i++) {
ints[i] = i;
}
}
public Iterable<Integer> iterable() {
List<Integer> list = new ArrayList<>();
for (int i = 0; i < ints.length; i++) {
list.add(ints[i]);
}
return list;
}
public static void main(String[] args) {
Test1 test = new Test1(10);
for (int i : test.iterable()) {
System.out.print(i);
}
int[]
ints = new int[10];
for (int i:ints){
System.out.print(i);
}
}
}

或者我们整个类

implements Iterable<Object> 接口,自定义Iterator类
public class Test2 implements Iterable<Object> {
private Object[] ints;
public Test2(int n) {
ints = new Object[n];
for (int i = 0; i < n; i++) {
ints[i] = i;
}
}
class Test2Iterator implements Iterator<Object> {
Object current;
int i = 0;
Object[] data;
public Test2Iterator(Object[] data) {
this.data = data;
if (data != null) {
current = data[0];
}
}
@Override
public boolean hasNext() {
return i != data.length;
}
@Override
public Object next() {
if(i>=data.length){
throw new NoSuchElementException();
}
Object value=current;
current = data[i++];
return current;
}
}
@Override
public Iterator<Object> iterator() {
return new Test2Iterator(ints);
}
public static void main(String[] args) {
Test2 test2 = new Test2(10);
for (Object i : test2) {
System.out.print(i);
}
}
}

 

最后

以上就是忐忑枕头为你收集整理的java的foreach语法详解的全部内容,希望文章能够帮你解决java的foreach语法详解所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(55)

评论列表共有 0 条评论

立即
投稿
返回
顶部