简体   繁体   English

Java逻辑,需要在哈希表中添加和删除比较值而不是匹配键的逻辑

[英]Java -need logic to add and delete from hashmap comparing values rather than matching keys

i have 2 drop downs in my UI,selecting one would give another set of check boxes configured for that particular value selected from the drop down.each time i add some connection between the selected value and the value in checkboxes, it should save somewhere and correctly identify the element so that i can delete it, still retaining the values which were there before 我的UI中有2个下拉菜单,选择一个将为从下拉菜单中选择的特定值配置另一组复选框。每次我在所选值和复选框中的值之间添加一些连接时,它应该保存在某个位置并正确识别元​​素,以便我可以删除它,但仍保留之前的值

----UI---- ---- UI ----

Select box
        <button style="display: none;" type="submit" id="selected" name="_eventId_getid"></button> 
        <label for="name" >Product</label> 
        <form:select path="selectedProduct" disabled="${isDisabled}" onchange="simulateClick('selected');">
            <form:option value="0">Select...</form:option>
            <form:options items="${createProject.product}" itemLabel="name" itemValue="id" />
        </form:select>
    checkbox, depending upon slectbox   
  <button style="display:none;" type="submit" id="selectCopyType" name="_eventId_submit"> </button>
        <c:if test="${not empty createProject.elementType}">    

                <button style="display: none;" type="submit" id="copy" name="_eventId_getId2"></button> 
                    <input class="checkAllCheckbox" id="selectall"  name="selectall" type="checkbox"/>
                    <span style="display:inline; margin-left:auto;">Select All</span>
                    <!-- id must be the same as listId above -->
                    <div class="CFbox" id="id"  >
                    <form:checkboxes items="${ProjectCommand.ElementType}" onclick="simulateClick('copy')" path="CopyType" cssClass="case" itemValue="id" itemLabel="name"  name="case"/>                   </div>
              </div> 

      Class Command
      private String seelctedProduct;
      private List<Integer> CopyType;
      private List<Class1> class1


  Class Class1


      private Integer seq = 0;
      private String product;
     private String ElementName

      public void getSelectedCopy(Command command)
      {
        Map<Integer,String[]>map= new HashMap<Integer,String[]>();
        if (command.CopyType() != null && command.getCopyType().size() > 0)
        {
          List<Class1> copyList = new ArrayList<Class1>();

          Integer Seq = 0;
         if (command.getClass1() != null && command.getClass1().size() <= command.getCopyType.size())
          {
            //Max CfSeq is stored in the variable -1 . 
           Seq = command.getClass1().get(command.getClass1.size() - 1).getSeq();    
          }

         for ( int copytype : command.getCopyType())
          {

           if (command.getCopyType().size() >1)
            { 
             if (copyType <= Seq)
              {
               copyList.add(command.getClass1().get(Seq - 1));
                continue;
              }
            }
            cfSeq++;

            map.put(Seq,new String[]{command.getseelctedProduct(),"copyType"});
            System.out.println("map"+map);
            Class1 objclass1= new Class1();
            objclass1.setProduct(command.getseelctedProduct());
            objclass1.setElementName(copyType + "");
            objclass1.setSeq(Seq);
            copyList.add(objclass1);

          }
          command.setClass1(copyList);
        }
        else
        {
          command.setClass1(null);
        }
      }

Right now i am not getting the correct seq number and i am not able to delete the correct member from the map.. hope you guys got what i am trying to do!! 现在我没有获得正确的序列号,我无法从地图上删除正确的成员。.希望你们得到了我正在尝试做的事情! thanks for the help.I guess i need need logic to add and delete from hashmap comparing values rather than matching keys, if you got other suggestions for correctly displaying the sequence rather than clearing up the object each time.. please suggest 谢谢你的帮助。我想我需要逻辑来比较值而不是匹配键来从哈希图中添加和删除,如果您有其他建议可以正确显示序列而不是每次都清除对象。

If your problem really is to have a value -> key lookup, you should have a look at guava or Commons collections. 如果您的问题确实是有一个值->键查找,则应该查看番石榴或Commons集合。

Guava: http://www.discursive.com/books/cjcook/reference/collections-sect-key-by-value 番石榴: http : //www.discursive.com/books/cjcook/reference/collections-sect-key-by-value

Commons collections bidimap: http://commons.apache.org/collections/api-3.1/org/apache/commons/collections/BidiMap.html 共同收藏品比迪地图: http ://commons.apache.org/collections/api-3.1/org/apache/commons/collections/BidiMap.html

Commons collections is kind of old and stable, while guava is offering a lot of new paradigms and type safety using generics. Commons集合既古老又稳定,而番石榴则使用泛型提供了许多新的范例和类型安全性。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM