long[] IDs = {1,2,5,2,2,6,5,2,3,5,4,2};
List list = Arrays.asList(IDs);
for(Object i: list)
            {
              long l = i; // 这里显示我需要转换成long i = (Long)i;我需要的是基础类型的long
请问有什么方法?

解决方案 »

  1.   

    long[] IDs = {1,2,5,2,2,6,5,2,3,5,4,2};
    List list = Arrays.asList(IDs); // 这里显示建议我写成List<long[]>list其实变成了long[][] = {{1,2,5,2,2,6,5,2,3,5,4,2}}怎样才能使list里面是一维的long数组
      

  2.   

    不想类型转换就用泛型,List<Long> list = Arrays.asList(IDs); java的泛型就是糊弄编译器而已,没啥意义
    for(Long i: list)
    其实楼主你那样转化一下就可以了long i = (Long)i;不知道你还想得到啥
    而且Java的autobox可以允许包装类型和基本类型自动转换
      

  3.   

    long l = (Long)i;
    出来的l就已经是基本类型的long了
      

  4.   


    public static void main(String[] args) {
    // List<Long> list=new ArrayList<Long>();
    long[] IDs = { 1, 2, 5, 2, 2, 6, 5, 2, 3, 5, 4, 2 };
    List list = Arrays.asList(IDs);  //此时list对象中其实只有一个long型数组对象
    System.out.println("size="+list.size()); //得到size=1
    for (Object i : list) { //所以此处遍历没啥意义
    //Long l = (Long)i; // 这里显示我需要转换成long i = (Long)i; (此处强转异常)
    long[] l=(long[])i; //进行正确的强制类型转换
    int len=l.length;;
    for(int k=0;k<len;k++) //此时遍历打印
    System.out.print(l[k]+" "); 
    } }
      

  5.   

    long[] IDs = {1,2,5,2,2,6,5,2,3,5,4,2};
    List<long[]> list = Arrays.asList(IDs);
    for(long[] i : list) {
    for(long value : i){
    System.out.print(value+" ");
    }
    System.out.println();
    }
      

  6.   

    1 list当中存的只能是对象,不可以是long的;必须是Long[] ids你的明白.要不就成二维数组了
    2 就像楼上高人说的从se5就有autobox了
    所以建议这样--就是定义时每个数字后面都加上一个l或L
    Long[] IDs = {1l,2l,5l,2l,2l,6l,5l,2l,3l,5l,4l,2l};
    List<Long> list = Arrays.asList(IDs);
    for(long i: list)
      {
      long l = i; 
      System.out.println("l-->"+l);
      }
      

  7.   

    总是感觉楼主这个地方问的很奇怪,{1,2,5,2,2,6,5,2,3,5,4,2}这个不是一维数组吗? list是个集合,可以存放多个值,你要往list里面放数组很自然的就成了多维了。楼主这个地方应该是直接往list里面放long类型数据就可以了,而不是放long数组
      

  8.   

    补充:
    通过对Arrays类的源码的通读,发现其有一个静态的泛型方法,声明如下:
    public static List<T> asList(T...)
    由此可知,形参中T...表示的是一个变长数组(即参数类型T的变量可以是任意个)
    则你调用此方法中,T则为一个long[],因此此时的一个T便指一个long[],而非
    long[]中的每一个元素。
    因此返回值中的T也是指一个long[],而不是long[]中的多个元素。
    所以,返回的只是存放了一个long[]数据类型的list集合对象。
      

  9.   

    晕死  ----List list = Arrays.asList(IDs); // 这里显示建议我写成List<long[]>
    这里看错你用的方法了 ,直接像上面说的 用泛型List<long>就可以了
      

  10.   

    晕死  ----List list = Arrays.asList(IDs); // 这里显示建议我写成List<long[]>
    这里看错你用的方法了 ,直接像上面说的 用泛型List<long>就可以了
      

  11.   


    List<Long> list = Arrays.asList(IDs); 是编译不通的。。只能是List<long[]>,只写List默认的也是List<long[]>。。
      

  12.   


    哪我怎样才能取得一个一维的list啊。。
      

  13.   


    多谢,4楼我已经看过了
    可是和我用的不一样我需要的是一个long[]转换的list
    这个list我通过判断进行一定的删除和排序后,再输出成另外的long[]请问有什么好的建议么?
      

  14.   

    那就逐个添加: public static void main(String[] args) {
    long[] IDs = { 1, 2, 5, 2, 2, 6, 5, 2, 3, 5, 4, 2 };
    List<Long> list = new ArrayList<Long>();
    for(long i : IDs){
    list.add(i); //逐个添加long型元素
    }

    for (Long i : list) { 
    Long l = i; // 这里显示我需要转换成long i = (Long)i; 
    System.out.print(l+" ");
    } }
      

  15.   

    泛型
     List<Long>
    你懂吧??