如何操作Object []的ArrayList?

时间:2012-01-08 11:52:39

标签: java android

假设我在索引0处有一个包含Object[]{"Hello",10,abitmap}的ArrayList,在索引1处有一个Object[]{"How are you?",20,bbitmap}

如何从索引0获取"Hello"? 如何在索引1中将20替换为15

如何使用Collections.fill通过cbitmap填充ArrayList中的所有第三列?

感谢您的帮助。

4 个答案:

答案 0 :(得分:3)

很抱歉,如果我粗暴(或错误),但似乎你没有以正确的方式进行模型化。即使你可以轻松地做你需要做的事情,我也会建议你以另一种方式思考问题。

那就是OO方式。

不要将异类内容存储在泛型数组中,而是创建一个包含相应结构和语义的三个信息的类。

class MyStuff {
   private String name;
   private int anInt;
   private List bitmap; //WARN ::  here I guess that it would be preferable to have something else like an Image object, or a stream, or ...

   MyStuff() {}

   //GETTERS AND SETTERS
}

现在,更新属性非常简单,实际上也可以检索它们。

要将所有'em放在List中,您将可以方便地使用Generics

List<MyStuff> myStuffs = new ArrayList();
myStuffs.add(...);
myStuffs.add(...);

myStuffs.get(0).setAnInt(4)
myStuffs.get(0).setName("newName")

答案 1 :(得分:3)

不要使用Object [],而是创建一个内部类,例如:

private class ImageObject{
     private String name;
     private int size; 
     private BufferedImage bitmap;

  public ImageObject(String name, int size, BufferedImage bitmap){
     this.name = name;
     this.size = size;
     this.bitmap = bitmap;
  }

  public String getName(){ 
     return name; 
  }

  public int getSize(){ 
     return size; 
  }

  public BufferedImage getBitmap(){ 
     return bitmap; 
  }

  public void setName(String name){ 
     this.name = name; 
  }

  public void setSize(int size){ 
     this.size = size; 
  }

  public void setBitmap(BufferedImage bitmap){ 
     this.bitmap = bitmap; 
  }
}

然后,像这样创建ArrayList
ArrayList<ImageObject> objects = new ArrayList<ImageObject>();

答案 2 :(得分:2)

如何从索引0获取“Hello”?

Object hello = myArray.get(0)[0];

如何在索引1中将20替换为15?

myArray.get(1)[1] = new Integer(15);

答案 3 :(得分:1)

将问题的答案放入代码:

ArrayList<Object[]> list = new ArrayList<Object[]>();
list.add(new Object[]{"Hello",10,abitmap});
list.add(new Object[]{"How are you?",20,bbitmap});

Object hello = list.get(0)[0];   // get the first item of the first list entry
System.out.println(hello);

list.get(1)[1] = 15;             // set the second item of the second list entry
System.out.println(list.get(1)[1]);

请考虑按照评论中建议的其他方式构建自定义类。