【问题标题】:how to get all the details in an object when a single detail of the object is given as a reference当对象的单个细节作为参考时如何获取对象中的所有细节
【发布时间】:2018-04-13 17:30:17
【问题描述】:

我是 Java 编程新手。我最近一直在研究数组。我编写了一个代码,向用户提供我们拥有的项目,这些项目存储为每个项目的对象,其中包含 itemID、项目名称、项目价格、项目折扣等详细信息。现在,如果用户输入 itemID,它必须检索与该 ID 对应的所有项目详细信息。我怎样才能找回它们?

【问题讨论】:

  • 我不确定是否有人能够在不查看您的某些代码的情况下提供很多帮助。至少,就目前而言,这个问题对我来说还不清楚。这让我觉得这是一个家庭作业问题,请考虑查看meta.stackoverflow.com/questions/334822/… 以了解有助于改善问题接受度的方法。
  • 通常您必须使用Map 或索引。这不是一项简单的任务。 en.wikipedia.org/wiki/Inverted_index
  • 如果是数组;您需要使用循环找到具有相同 id 的对象。

标签: java arrays object


【解决方案1】:

我假设您将每一项都存储在一个相应的数组中。

如果要使用 ID 进行搜索,请使用地图。

什么是地图?

映射是键与其值之间的映射。如果你给一个键,它的值可以很容易地从地图中获取。

所以,这里ID是map的key,array是value。

示例代码:

Map map = new HashMap();

对于每一项,map.put(ID,对应数组);

所以,映射会是这样的

1 -> 1 的数组 2 -> 2 的数组 3 -> 3 的数组

如果您想获取 ID 3 的数组,只需执行 map.get(3) 即可得到您的数组

【讨论】:

    【解决方案2】:

    您必须在循环中搜索数组:

    /** return null if 'id' is not a itemId of the list, returns the object otherwise **/
    public Item getItemById(int id, Item[] all) {
        for(Item i : all)
          if(i.itemId == id)
             return i;
        return null;
    }
    

    【讨论】:

      【解决方案3】:

      如果您有一个项目列表,那么只需遍历它们并在您找到您想要的项目时返回:

      private YourClass searchUsingAttribute(AttributeType searchingValue)
        for(YourClass obj:arrayOfObjects){
           if(obj.attribute.equals(searchingValue)){
             return obj;
           }
        }
        return null;
      }
      

      当然,如果您的数组已排序,那么您可以使用更好的搜索功能(查找二进制搜索)!

      【讨论】:

        猜你喜欢
        • 2018-12-14
        • 2022-01-06
        • 2014-05-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-01-31
        • 1970-01-01
        相关资源
        最近更新 更多