代码之家  ›  专栏  ›  技术社区  ›  Marshmellow1328

按公用键对对象分组

  •  1
  • Marshmellow1328  · 技术社区  · 14 年前

    我有一份顾客名单。每个客户都有一个地址,有些客户实际上可能有相同的地址。我的最终目标是根据客户的地址对他们进行分组。我想我可以把客户放在某种基于列表的结构中,然后按地址排序,或者我可以把对象放到某种允许每个键有多个值的映射中。

    List:
    A1 - C1, A1 - C2, A2 - C3, A3 - C4, A3 - C5
    
    Map:
    A1 A2 A3
    C1 C3 C4
    C2    C5
    

    你认为哪种选择(或其他)是最好的解决方案?是否有任何现有的类可以使开发更容易?

    2 回复  |  直到 14 年前
        1
  •  4
  •   BalusC    14 年前

    你可以用 Map<K, Collection<V>> K 是地址和地址吗 V 是客户。另一个选择是 Google Collections Multimap<K, V> 地图<K、 收藏<V>&燃气轮机; .

        2
  •  1
  •   Joey Gibson    14 年前

    Group<Customer> custByAddr = group(customers, by(on(Customer.class).getAddress().getId())
    

    然后,您可以通过拨打电话按组获取客户列表 custByAddr.find("addressId1")

    http://code.google.com/p/lambdaj/wiki/LambdajFeatures 在分组项目部分。