Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/377.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java ArrayList,如何在内部进行比较?(爪哇)_Java - Fatal编程技术网

Java ArrayList,如何在内部进行比较?(爪哇)

Java ArrayList,如何在内部进行比较?(爪哇),java,Java,现在,我有一个ArrayList,它看起来像: [ [id, type, name, $], [id, type, name, $], [id, type, name, $], [id, type, name, $]....] 现在,如果我想比较索引0和1,或者我想在逗号后添加另一个值: [id、类型、名称、$、YOLO] 我该怎么做呢?谢谢 编辑:这里有些东西: 我正在从Excel中读取数据: for (int i = first; i <= last; i++) {

现在,我有一个ArrayList,它看起来像:

[ [id, type, name, $], [id, type, name, $], [id, type, name, $], [id, type, name, $]....]
现在,如果我想比较索引0和1,或者我想在逗号后添加另一个值:

[id、类型、名称、$、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时,它正好显示了我之前所说的

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

在您的例子中,我怀疑您有一个属性为id、type、name和$的对象,您使用.addObject方法将它们存储在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
    }

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

listOfLists.get0.addYOLO

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

您必须迭代两个列表并比较每个项目:

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;
}
这假设您已经为单元实现了equals,不管它是什么,在这里并不重要

由于子列表中的每个项目似乎都是Cell类型,因此您应该如下定义列表:

List someList=新数组列表

这将确保每个元素的类型相同


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

您需要发布相关的示例代码。代码涉及很多其他函数等等,我只是想了解如何完成这部分。我从一个文件中获取所有数据,并将它们存储在ArrayList中。我可以使它们成为所有对象或所有字符串,这是我选择保存它们的方式。什么是sData?我想我们应该猜这是另一个列表?是的,代表节目数据。这是将所有值添加到数组中时使它们彼此保持一致的唯一方法。不知道该怎么做。基本上,我想在ArrayList之类的结构中保留一个要添加/删除/比较的数据结构。只想被指向正确的方向。id、类型、名称等。。所有字符串都已存在。所以它不是一个变量id,或者我应该这样设置吗?你有没有一些书面代码可以展示给我们,这样我们就可以了解你已经拥有了什么以及你想要实现什么?基本上你拥有的是一个更大的ArrayList中的ArrayList对象,看看我的更新我会怎么做…我看到你在那里做了什么,除非id不是属性。我从来没有做过那样的事情。您可以看到我是如何从for循环中检索数据的,我可以用什么方式创建一个属性类,在这个类中,我可以专门将每个单元格分配到每个属性类型,并将它们更新到ArrayList中?不要使用==,进行比较,如果您不知道数据类型是基元,或者共享了从提供的源不知道的相等对象。。。这种比较可能真的有失偏颇。例如,通过自动装箱创建的整数是Multiton-128-127,因此这种比较可能适用于较低的数字,但不适用于较高的数字。但是,当使用新的运算符比较创建时,不是多内容将永远无法工作。不要打开IDE,但这不是像:[id]、[type]等。。而不是[id、类型等]?这不起作用。我不是在比较两个不同的领域。为什么我要将ID与类型进行比较?好的,谢谢,我不知道我可以这样做。我现在看到你的编辑,如果我不能更好地解释的话,我很抱歉。我想我可以继续努力。我从一个文件中获取信息,比如说Excel或CSV之类的。我将x行和x列存储到ArrayList或任何其他我想要的数据结构中。然后我希望能够在列表中比较common$或type等。数据库是否工作得更好?好的,我已经正式阅读了更新的数据库。看起来不错!我很高兴你让我编辑我的代码,否则我就不会明白你在这里做什么。如果你知道步骤的话,我想问你一个小问题。假设我要比较两个列表,就像你在函数中做的那样。现在[id、类型等,$]格式始终保持不变。一旦我比较了两个数组,发现它们相等,因为它们是相同的id、类型和其他字段。。唯一不同的是美元。我是否可以循环它,以便它创建一个新的最终列表,使其成为:[id,type,name,$,$]。我已经了解了alotList实现了equals,如果它们的大小相同并且所有元素都相等,那么它就等于另一个列表。您的listsAreEqual方法可以替换为listOne.equalslistTwo