【问题标题】:How to Find an object Based on a certain attribute in ArrayList and edit the object如何根据ArrayList中的某个属性查找对象并编辑对象
【发布时间】:2014-01-29 11:01:38
【问题描述】:

标题说明了这一点。是否可以根据某个属性在ArrayList 中查找对象,然后编辑对象的不同属性。 例如:

MyList.Find( Attribute ).edit(something in attribute)

【问题讨论】:

  • 你的问题对我来说非常模糊和不清楚!请添加更多信息
  • 简化这意味着我有一个对象数组列表我想找到一个具有某个唯一属性的对象然后我想编辑该对象的另一个属性我可以这样做吗?

标签: java object arraylist attributes


【解决方案1】:

遍历列表,直到找到具有所需属性的对象。现在你有了对象。将对象上的 setter 用于其他字段。

您可能需要考虑将对象存储在 Map 而不是 List 中。

【讨论】:

  • OP为什么要使用地图?
  • 如果对象在一个map中,key是被搜索的属性,那么时间复杂度是O(1),而不是遍历列表的O(n)。跨度>
  • 是的,但是很难保持密钥 snycroniced... 如果您更新值,密钥将会不同。所以请小心
【解决方案2】:

不在本机 Java 类中。

您要么需要一个支持此功能的库,要么自己编写它。

我会建议一个返回第一个匹配项的简单方法:

public static CustomObject findFirstByXxx(List<CustomObject> list, Object xxx) {
    for(CustomObject o : list) {
        if(o.getXxx().equals(xxx) {
            return o;
        }
    }

    return null;
}

您也可以尝试使用反射使要搜索的属性可变。

【讨论】:

    【解决方案3】:

    使用 binarySearch 方法。

    示例:

    int index = Collections.binarySearch(array, Object, new Comparator<Object>() {
        public int compare(Object o1, Object o2) {
            if (o1.getProperty().equals(o2.getProperty()))
            return 0;
    
        return -1;
        }
    });
    

    【讨论】:

    • 列表必须按升序排列
    猜你喜欢
    • 2013-07-05
    • 2018-01-15
    • 2012-06-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多