假设我在索引0处有一个包含Object[]{"Hello",10,abitmap}
的ArrayList,在索引1处有一个Object[]{"How are you?",20,bbitmap}
如何从索引0获取"Hello"
?
如何在索引1中将20
替换为15
?
如何使用Collections.fill通过cbitmap填充ArrayList中的所有第三列?
感谢您的帮助。
答案 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]);
请考虑按照评论中建议的其他方式构建自定义类。