黑马程序员技术交流社区

标题: 集合类小问题一枚 [打印本页]

作者: 唐志海    时间: 2014-1-4 13:34
标题: 集合类小问题一枚
本帖最后由 唐志海 于 2014-1-21 02:39 编辑
  1. public class CollectionDemo
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 ArrayList<String> al=new ArrayList();
  6.                 al.add("kk");
  7.                 al.add("kd");
  8.                 al.add("kc");
  9.                 al.add("ka");
  10.                
  11.                 //sop(al);
  12.                 for(int x=0;x<al.size();x++)
  13.                 {
  14.                         sop(x);
  15.                 }
  16.                
  17.         }
  18.         public static void sop(Object obj)
  19.         {
  20.                 System.out.print(obj);
  21.         }
  22. }
复制代码

为什么输出的不是元素而是0123的地址呢?
作者: 李兴    时间: 2014-1-4 14:22
你打印的x是循环变量,不是结合的元素,这就要调用集合的get(int index)方法来获取对应index位置上的集合元素,代码如下

  1. public static void main(String[] args)
  2.         {
  3.                 ArrayList<String> al=new ArrayList();
  4.                 al.add("kk");
  5.                 al.add("kd");
  6.                 al.add("kc");
  7.                 al.add("ka");
  8.                
  9.                 //sop(al);
  10.                 for(int x=0;x<al.size();x++)
  11.                 {
  12.                         sop(al.get(x));  //这里改为al.get(x)即可
  13.                 }
  14.                
  15.         }
  16.         public static void sop(Object obj)
  17.         {
  18.                 System.out.println(obj);
  19.         }
复制代码


作者: taoge    时间: 2014-1-4 14:25
往sop()里传参数错了,你传的0,1,2,3当然会打印0123,要这样
  1.                 for (int x = 0; x < al.size(); x++)
  2.                 {
  3.                         sop(al);
  4.                 }
复制代码

不过这样会把集合打印4次,你可以用增强的循环,像这样
  1. public class CollectionDemo
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 ArrayList<String> al = new ArrayList();
  6.                 al.add("kk");
  7.                 al.add("kd");
  8.                 al.add("kc");
  9.                 al.add("ka");

  10.                 // sop(al);
  11.                 for (String s : al)
  12.                 {
  13.                         sop(s + ",");
  14.                 }

  15.         }

  16.         public static void sop(Object obj)
  17.         {
  18.                 System.out.print(obj);
  19.         }
  20. }
复制代码


作者: 黑马IT学员    时间: 2014-1-4 16:56
public class CollectionDemo
{
        public static void main(String[] args)
        {
                ArrayList<String> al=new ArrayList();
                al.add("kk");
                al.add("kd");
                al.add("kc");
                al.add("ka");
               
                //sop(al);
                for(int x=0;x<al.size();x++)
                {
                        sop(x);
                }
               
        }
        public static void sop(Object obj)
        {
                System.out.print(obj);
   
//这个地方的参数不应该是obj而是a1.get(x);根据索引的位置找到集合中的元素值   
}
}
作者: 午夜b'Boy    时间: 2014-1-4 17:25
集合我也没学好,受教了
作者: 马姗姗    时间: 2014-1-4 18:13
import java.util.ArrayList;
public class CollectionDemo
{
        public static void main(String[] args)
        {
                ArrayList<String> al=new ArrayList();
                al.add("kk");
                al.add("kd");
                al.add("kc");
                al.add("ka");
               
                //sop(al);
                for(int x=0;x<al.size();x++)
                {
                        sop(x);//这里你调用了sop方法,没有输出集合的元素,
                                                //你传入的参数是x所以你打印了的是0123
                                       
                }
                                //可以用加强for来遍历集合
                                        for(String str : al){
                                                System.out.println(str);
                                        }
               
        }
        public static void sop(Object obj)
        {
                System.out.print(obj);
        }
}
作者: 快乐的黑马    时间: 2014-1-4 19:38
for(int x=0;x<al.size();x++)
  {
        sop(x);
   }
你这是直接打印x的值,要获取集合的元素,变成get(x);
作者: 周志彬    时间: 2014-1-4 19:55
                for(int x=0;x<al.size();x++)
                {
                        sop(x);                         //你传入的是x  当然显示的是0123
                        sop(al.get(x));              //这个是打印集合中的所有元素
                }






~~!奋斗




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2