简体   繁体   中英

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----

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.

Guava: 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

Commons collections is kind of old and stable, while guava is offering a lot of new paradigms and type safety using generics.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

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