不同的数据结构在java中保存除map之外的数据

时间:2015-06-21 06:06:01

标签: java

我想将数据存储在如下所示的结构中。有一个地图将值存储在另一个嵌套地图中 -

Key               Value
                  (Key)           (Value)
B1       -->   TradeRef  ----> "tradeRef1" 
               Dealdate  ----> "DealDate1", 

B2       -->   TradeRef  ----> "tradeRef2"
               Dealdate  ----> "DealDate2"             

我已经开发出一种解决方案,工作正常。有没有更好的方法来解决这个问题。

我的方法遇到的问题是正在创建大量的数组列表。此外,如果超级地图的关键字的数量增加如B1和B2以及之后,让我们说新的关键字B3再次引入,则将引入新的数组列表。出于这个原因,请告诉我任何替代方法,以达到此问题的相同结果。

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

HashMap<String, List<String>> b1Map = new HashMap<String, List<String>>();
HashMap<String, List<String>> b2Map = new HashMap<String, List<String>>();      

ArrayList<String> B1tradeRefList = new ArrayList<String>();
ArrayList<String> B1dealDateList = new ArrayList<String>();
ArrayList<String> B2tradeRefList = new ArrayList<String>();
ArrayList<String> B2dealDateList = new ArrayList<String>();

B1tradeRefList.add("tradeRef1");
B1tradeRefList.add("tradeRef2");
B1dealDateList.add("DealDate1");
B1dealDateList.add("DealDate2");

B2tradeRefList.add("tradeRef33");
B2tradeRefList.add("tradeRef44");
B2dealDateList.add("DealDate22");
B2dealDateList.add("DealDate24");

b1Map.put("TradeRef", B1tradeRefList);
b1Map.put("Dealdate", B1dealDateList);

b2Map.put("TradeRef", B2tradeRefList);
b2Map.put("Dealdate", B2dealDateList);

mapOfMapOfStrings.put("B1", b1Map);
mapOfMapOfStrings.put("B2", b2Map);

可以通过有效的方式使用任何其他数据结构(例如树或链接列表)来解决此问题吗?或者也许通过创建自定义数据结构? 我希望探索除嵌套地图解决方案之外的相同上述功能的自定义数据结构实现。

1 个答案:

答案 0 :(得分:0)

不确定为什么你不使用课程:

  <script>
    var myapp = angular.module('myapp', []);
    myapp.controller("MyController", function($compile, $scope) {
       var svgc = this;

       svgc.addCube = function() {
          var cube = document.createElement('cube'); 
          cube.className = "cube"; 
          document.body.appendChild(cube);
          $compile(angular.element('.cube'))($scope);
       }   
    }); 
...
</script>

然后你可以简单地拥有一个SELECT DISTINCT * FROM job_detail, apply WHERE job_detail.job_id = apply.job_id AND apply.end_user_id =1 AND job_detail.jobtitle = 'barber' AND (job_detail.Zip LIKE '%900%' OR job_detail.city LIKE '%900%' OR job_detail.country LIKE '%900%') ,而不需要不必要的嵌套和重复键。这种方法更快,更安全(因为你有一个显式的类实例),并且比使用常量键的嵌套映射使用更少的内存。