[英]Java -need logic to add and delete from hashmap comparing values rather than matching keys
我的UI中有2个下拉菜单,选择一个将为从下拉菜单中选择的特定值配置另一组复选框。每次我在所选值和复选框中的值之间添加一些连接时,它应该保存在某个位置并正确识别元素,以便我可以删除它,但仍保留之前的值
---- 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);
}
}
现在我没有获得正确的序列号,我无法从地图上删除正确的成员。.希望你们得到了我正在尝试做的事情! 谢谢你的帮助。我想我需要逻辑来比较值而不是匹配键来从哈希图中添加和删除,如果您有其他建议可以正确显示序列而不是每次都清除对象。
如果您的问题确实是有一个值->键查找,则应该查看番石榴或Commons集合。
番石榴: http : //www.discursive.com/books/cjcook/reference/collections-sect-key-by-value
共同收藏品比迪地图: http ://commons.apache.org/collections/api-3.1/org/apache/commons/collections/BidiMap.html
Commons集合既古老又稳定,而番石榴则使用泛型提供了许多新的范例和类型安全性。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.