Java 优化数据结构,如Map<;字符串,Map<;字符串,Map<;字符串、位置>&燃气轮机&燃气轮机;

Java 优化数据结构,如Map<;字符串,Map<;字符串,Map<;字符串、位置>&燃气轮机&燃气轮机;,java,hashmap,Java,Hashmap,我试图将我的数据放在像Map这样的数据结构中。例如,我有不同的账户,每个账户有不同的策略,每个策略有不同的证券,每个证券有一堆头寸 问题是,如果我想搜索一个职位,我需要查找三次。是否有更好的方法使用更好的方法实现上述场景?有人告诉我,我可以使用key+value作为键来构建一些HashMap(我记不起细节,我也不太明白) 据我所知,我可以使用Arraylist:[帐户、策略、安全]作为构建HashMap的密钥 谁能给我一些建议吗?我同意希莫塞尔的意见。我写这篇文章是为了尝试。如果你卡住了,你可以

我试图将我的数据放在像
Map
这样的数据结构中。例如,我有不同的账户,每个账户有不同的策略,每个策略有不同的证券,每个证券有一堆头寸

问题是,如果我想搜索一个职位,我需要查找三次。是否有更好的方法使用更好的方法实现上述场景?有人告诉我,我可以使用key+value作为键来构建一些HashMap(我记不起细节,我也不太明白)

据我所知,我可以使用
Arraylist:[帐户、策略、安全]
作为构建HashMap的密钥


谁能给我一些建议吗?

我同意希莫塞尔的意见。我写这篇文章是为了尝试。如果你卡住了,你可以用它

封装.java

class Encapsulation {
  String account;
  String strategy;
  String security;

  public Encapsulation(String account, String strategy, String security) {
    this.account = account;
    this.strategy = strategy;
    this.security = security;
  }

  @Override
  public String toString() {
    return "Encapsulation{" +
        "account='" + account + '\'' +
        ", strategy='" + strategy + '\'' +
        ", security='" + security + '\'' +
        '}';
  }

  @Override
  public int hashCode() {
    int result = account.hashCode();
    result = 31 * result + strategy.hashCode();
    result = 31 * result + security.hashCode();
    return result;
  }

  @Override
  public boolean equals(Object o) {
    if (this == o) {
      return true;
    }
    if (!(o instanceof Encapsulation)) {
      return false;
    }
    Encapsulation that = (Encapsulation) o;
    if (!account.equals(that.account)) {
      return false;
    }
    if (!strategy.equals(that.strategy)) {
      return false;
    }
    return security.equals(that.security);
  }
}
import java.util.Arrays;
import java.util.List;

class Position{
  @Override
  public String toString() {
    return "Position{" +
        "positions=" + Arrays.toString(positions.toArray()) +
        '}';
  }

  public List<String> positions;
}
package com.bhavya.stackoverflow.examples.q40553869;

import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;


public class MultiMapImplementation {
  public static void main(String[] args) {
    Map<Encapsulation, Position> encapsulationPositionMap = new HashMap<>();
    Encapsulation encapsulation = new Encapsulation("ac1", "strat1", "sec1");
    Position position = new Position();
    position.positions = Arrays.asList("position1","position2");
    encapsulationPositionMap.put(encapsulation,position);

    encapsulationPositionMap.forEach((key,value) -> System.out.println(key.toString() + value.toString()));
  }
}
Position.java

class Encapsulation {
  String account;
  String strategy;
  String security;

  public Encapsulation(String account, String strategy, String security) {
    this.account = account;
    this.strategy = strategy;
    this.security = security;
  }

  @Override
  public String toString() {
    return "Encapsulation{" +
        "account='" + account + '\'' +
        ", strategy='" + strategy + '\'' +
        ", security='" + security + '\'' +
        '}';
  }

  @Override
  public int hashCode() {
    int result = account.hashCode();
    result = 31 * result + strategy.hashCode();
    result = 31 * result + security.hashCode();
    return result;
  }

  @Override
  public boolean equals(Object o) {
    if (this == o) {
      return true;
    }
    if (!(o instanceof Encapsulation)) {
      return false;
    }
    Encapsulation that = (Encapsulation) o;
    if (!account.equals(that.account)) {
      return false;
    }
    if (!strategy.equals(that.strategy)) {
      return false;
    }
    return security.equals(that.security);
  }
}
import java.util.Arrays;
import java.util.List;

class Position{
  @Override
  public String toString() {
    return "Position{" +
        "positions=" + Arrays.toString(positions.toArray()) +
        '}';
  }

  public List<String> positions;
}
package com.bhavya.stackoverflow.examples.q40553869;

import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;


public class MultiMapImplementation {
  public static void main(String[] args) {
    Map<Encapsulation, Position> encapsulationPositionMap = new HashMap<>();
    Encapsulation encapsulation = new Encapsulation("ac1", "strat1", "sec1");
    Position position = new Position();
    position.positions = Arrays.asList("position1","position2");
    encapsulationPositionMap.put(encapsulation,position);

    encapsulationPositionMap.forEach((key,value) -> System.out.println(key.toString() + value.toString()));
  }
}


因此,总而言之,为了使HashMap有效工作,您的密钥类应该提供hashCode和equals方法

创建一个封装帐户、策略和安全性的自定义类。实现
equals()
hashCode()
,您就可以将其用作密钥。如果有明显的问题,您可以尝试使用multimap抱歉,但我认为您需要使用一些数据库。