这个FOR循环怎么改成FOR each 循环呢?
for(int index=0;index<list.size();index++)
textArea.append(list.get(index)+newLine);
很清楚FOR each 循环的大哥大姐能给我再讲解下吗?我不是很明白啊
for(int index=0;index<list.size();index++)
textArea.append(list.get(index)+newLine);
很清楚FOR each 循环的大哥大姐能给我再讲解下吗?我不是很明白啊
textArea.append(s+newLine);
可以在实现了Iterable接口的类上使用这种foreach,Collection接口继承Iterable接口
所以所以Collection接口的实现者都实现iterator方法,返回一个迭代器,所以Collection都可以使用foreach
List自然也是可以的
提示的意思 不能从object到String
textArea.append(s+newLine);
比如是Object类型,改成
for(Object o : list)
textArea.append(o.toString()+newLine);
public class ForEachTest {
public static void main(String[] args) {
int[] a = { 1, 2, 3, 4, 5 };
int[] b = new int[10];
for (int i : b) {
b[i] = 0;
}
for (int i : b) {
System.out.print(b[i]);
}
System.out.println();
System.arraycopy(a, 0, b, 0, 5);
for (int i : b) {
System.out.print(b[i]);
} }
}
List<String> list = new ArrayList<String>();
for(String str : list){
textArea.append(str+newLine);
}
public class ok {
public static void main(String[] args) {
List<Integer> list=new ArrayList<Integer>();
for(int i=0;i<8;++i){
list.add(i+1);
}
for(int k:list){
System.out.println(k);
}
}
}其中的for each循环相当于:for(int k=0;k<list.size();++k){
System.out.println(list.get(k));
}for each循环只适合遍历整个数组,如果只是对数组中某些元素操作还是要用for循环。
//建立一个数组 集合里面都是int 型
int[] intxx = new int[]{1,2,3,4,5};
//建立一个集合 集合里面都是String 类型
List<String> list = new ArrayList<String>();
list.add("a");
list.add("b");
list.add("c");
//开始for each
/*相当于左边用一组 int 类型的无名的集合把 intxx 数组里面的“数据”都搜集起来,
用i分别表现出来 (intxxx里面有几条内容就循环几次!!!就是所谓的遍历!!)*/
for(int i : intxx ){
System.out.println(i); //循环第几次,i 就是intxxx中的第几个内容的值!!!
i = 100;
/*注意: 这里面对i的修改的只是无名集合的修改,对原数据intxxx不会产生影响!!
所以说for each 只能遍历查看原来数据,而不能修改数据*/
}
//同理,也可以对集合进行遍历!!! list是什么类型,就用什么类型来收集,所以用(String i:list)
for(String i : list){
System.out.println(i);
}
//这是我的不正规理解,具体的运行机制我不知道,不过这样理解起来我感觉很容易~~~~~~~
}
这样理解是不是好点呢?
import java.util.Iterator;public class Name1 {
public String name;
public int age;
public int sal;
public Name1(){
}
//定义构造方法进行初始化的时候传递参数
public Name1(String name,int age,int sal){
this.name=name;
this.age=age;
this.sal=sal;
}
//获取名字参数
public String getName(){
return name;
}
//获取年龄参数
public int getAge(){
return age;
}
//获取工资参数
public int getSal(){
return sal;
}
//在这个类中的main方法可以直接通过方法调用该方法
public static void say(){
Name1 name1=new Name1("程飞艳",24,3000);
Name1 name2=new Name1("张晓亚",22,4000);
Name1 name3=new Name1("张天明",26,5000);
Name1 name4=new Name1("赵伟南",23,6000);
Name1 name=new Name1();
//给集合ArrayList<Name1>设置了一个参数,
//说明该集合中只能添加Name1类型的元素
//其他类型的元素,不能添加否则会报错
ArrayList<Name1> list=new ArrayList<Name1>();
list.add(name1);//增添新元素
list.add(name2);
list.add(name3);
list.add(name4);
//用相同类型的数据接收集合中的元素,不需要强制转型
Name1 na=list.get(2);
//通过类名直接输出类中的元素
System.out.println(na.name+" "+na.age+" "+na.sal+" ");
System.out.println("***********************");
for(int a=0;a<list.size();a++){
System.out.println(na.name+" "+na.age+" "+na.sal+" ");
}
System.out.println("-----------------------");
for(Name1 n:list){
System.out.println(n.name+" "+n.age+" "+n.sal+" ");
}
System.out.println("------------------------");
//利用iterator()方法遍历集合中的所有元素
Iterator it=list.iterator();
while(it.hasNext()){//判断集合中是否有下一个元素
Name1 a=(Name1)it.next();//如果有就将其转化成其原来的Name1对象
//然后通过对象引用进行输出对象中的各个属性(成员变量)
System.out.println(a.getName()+" "+a.getAge()+" "+a.getSal());
}
}
public static void main(String[] args){
say();//在自己的类内设置main()方法,静态的可以这样直接用方法名调用
}
}
//class TextName1{
//
// public static void main(String[] args){
// Name1 nana=new Name1();//在不同类中,虽然是静态方法,也不能直接用方法名调用方法
// nana.say();//必须通过实例名调用
// }
//}
list = new ArrayList<String>();就好了