【问题标题】:How to compare fields between arrays of objects?如何比较对象数组之间的字段?
【发布时间】:2017-02-26 03:51:59
【问题描述】:

我有两个对象数组: ArrayList<Object> list1 и ArrayList<Object> list2.

我的代码示例(简化):

Class Object1 {
String str1 = "example";
}

Class Object2 {
String str2 = "example";
}

ArrayList<Object> list1 = new ArrayList<>();
list1.add(new Object1());
ArrayList<Object> list2 = new ArrayList<>();
list2.add(new Object2());

问题:我需要比较字段 str1 和 str2(在位于不同数组中的 Object1 和 Object2 之间)

【问题讨论】:

  • Object1Object2 实现相同的接口,该接口声明了一个getter 方法,其中每个类都返回其字符串。然后让两个类都实现Comparable接口,每个类将其字符串与通用接口getter方法的返回值进行比较。

标签: java android arrays compare


【解决方案1】:

您为什么不能遍历 1 个列表、调用该字段的 getter 并将其与另一个列表中的相应对象进行比较?

for (int i = 0; i < list1.size(); i++) {
    Object obj1 = list1.get(i);
    Object obj2 = list2.get(i);
    System.out.println(obj1.str1.equals(obj2.str2)); // Better use getter here instead
}

【讨论】:

  • 在这种情况下,我无法访问 getter。有什么问题? (此代码用于不是“main”的方法)
  • @GlebTserr 从技术上讲,没什么。但在设计方面,这是不好的做法,应该避免,因为它会破坏封装。
【解决方案2】:

您可以将 list1.get(0).str1 与 list2.get(0).str2 进行比较。如果您使用 for 循环,请使用 get(i) 代替 get(0)。

【讨论】:

  • 在这种情况下,我无权访问变量。
【解决方案3】:

你可以比较str1str2like

list1.get(indexOfObject1InList1).str1.equals(list2.get(indexOfObject2InList2).str2)

【讨论】:

  • 我无法通过运算符“point”访问变量。有什么问题?
猜你喜欢
  • 1970-01-01
  • 2016-10-29
  • 2021-12-07
  • 1970-01-01
  • 2021-07-28
  • 1970-01-01
  • 2015-02-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多