基于具有复合键和值的映射创建类结构

时间:2017-11-19 07:22:49

标签: java dictionary hashmap

我有一张地图:

Map<Map<String,Map>, List<Map<String, String>>> map = new HashMap();

使用OOP原则重构以下数据结构并创建类结构的最简单方法是什么?

1 个答案:

答案 0 :(得分:1)

在开始重构之前,您应该有一个简单而清晰的图片:

  1. 您能否将集合中的数据分解为业务实体(订单,产品,客户......)?

  2. 这些数据之间有什么关系?它可以是链接到包含产品的订单的用户列表。

  3. 使用正确的Collection进行正确的使用。 HashMap 是键/值对无序集合。您可以通过其键访问元素(一个键指向一个值,没有重复键)。 ArrayList 是仅有序集合的值。您可以通过整数索引访问元素。

  4. 鉴于以下收集:

    HashMap<String, HashMap<String, String>> map = new HashMap<String, HashMap<String, String>>();
    

    及其代表:

    {
      "Order-Ref-01": {
         "id": "123456"
         "client": "MrFooBar"
         "destination": "USA"
         "type": "Electronic"
      },
      "Order-Ref-02": {
        //...
      } 
    }
    

    您可以将其重构为订单列表,因为您决定不需要按键提取。

    List<Order> orders = new ArrayList<>();
    

    您可以创建2个以上的课程作为商业实体:

    class Client {
      private String id;
      private String name;
      // ...
    }
    
    class Order {
      private String id;
      private Client client;
      private String destination;
      private String type;
      // ...
    }
    

    所有这些都是将您的数据结构分解为代表您的业务实体及其关系的较小部分。