Java ArrayList,如何在内部进行比较?(爪哇)
现在,我有一个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++) {
[ [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