-3

所以目前,我有一个 ArrayList 看起来像:

[ [id, type, name, $], [id, type, name, $], [id, type, name, $], [id, type, name, $]....]

现在说如果我想比较索引 0 和 1,或者我想在逗号后添加另一个值:

[id, type, name, $, YOLO]

我该怎么做呢?谢谢!

编辑:这里有一些东西:

我正在从 Excel 中读取数据:

    for (int i = first; i <= last; i++) {
        Row row = sheet.getRow(i);
        Cell id = row.getCell(0);
        Cell type = row.getCell(1);
        Cell name = row.getCell(2);
        Cell $ = row.getCell(3);

    List temp = new ArrayList();
    temp.add(id);
    temp.add(type);
    temp.add(name);
    temp.add($);
  sData.add(temp);

}

然后当您打印 sData 时,它会准确显示我之前所说的内容。

4

2 回答 2

0

Java 中的 ArrayList 是保存对象集合的动态结构。

在您的情况下,我怀疑您有一个具有属性 id、type、name 和 $ 的对象,并且您使用 .add(Object) 方法将它们存储在 ArrayList 中。

您想要的是将另一个属性添加到您的对象并使用相同的方法将该对象添加到您的 ArrayList。

你说的关于比较索引的事情......(我想你的意思是每个对象的 id 变量)。好吧,这也很容易(假设您在对象中实现了适当的方法 - 假设变量 id 您应该有一个方法 setId 和 getId ...等):

if(arrayList.get(0).getId == .... ){
    //do something
} 

更新

public class MyExcelRowObject {

    private String id;
    private String type;
    private String name;
    private String $;

    public MyExcelRowObject(){
        super();
    }

    public MyExcelRowObject(String id, String type, String name, String $) {
        this.id = id;
        this.type = type;
        this.name = name;
        this.$ = $;
    }

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }


    public String getType() {
        return type;
    }

    public void setType(String type) {
        this.type = type;
    }


    public String getName() {
        return name;
    }

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


    public String get$() {
        return $;
    }

    public void set$(String $) {
        this.$ = $;
    }

}

这是对对象的操作

    //this is your Object's holder
    ArrayList<MyExcelRowObject> myList = new ArrayList<MyExcelRowObject> ();

    //here you manipulate your rows and add them to your MyExcelRowObject objects
    for (int i = first; i <= last; i++) {
        MyExcelRowObject tmpObj = new MyExcelRowObject();
        Row row = sheet.getRow(i);
        tmpObj.setId(row.getCell(0));
        tmpObj.setType(row.getCell(1));
        tmpObj.setName(row.getCell(2));
        tmpObj.set$(row.getCell(3));

        myList.add(tmpObj);
    }

    //here is how you manipulate your List objects
    if(myList.get(0).getId().equals(myList.get(1).getId())){
        //the  ids of first and second row are the same
    }
于 2012-07-14T04:40:09.050 回答
0

如果您有一个 ArrayList 的 ArrayList,则可以执行以下操作以将元素添加到第一个列表:

listOfLists.get(0).add("YOLO");

比较这两个列表是另一回事......

您必须遍历两个列表并比较每个项目:

boolean listsAreEqual(List<Cell> listOne, List<Cell> listTwo)
{
    if (listOne.size() != listTwo()) {
        return false;
    }

    for (int i = 0; i < listOne.size(); i++) {
        if (! listOne.get(i).equals(listTwo.get(i)) {
            return false;
        }
    }

    return true;
}

这假设您已经实现equalsCell(无论是什么 - 在这里都不重要)。

由于您的子列表中的每个项目似乎都是 type Cell,因此您应该像这样定义您的列表:

List<Cell> someList = new ArrayList<Cell>();

这确保了每个元素都是相同的类型。

它将在编译时强制执行,这很好。

于 2012-07-14T04:40:13.037 回答