Java 从JList中删除多个选项

Java 从JList中删除多个选项,java,swing,hashmap,selection,jlist,Java,Swing,Hashmap,Selection,Jlist,我有一个JList,其中包含一些允许多个选择的元素。在将这些元素添加到JList之前,有关它们的一些信息将存储在单独类中的静态HashMap中。当选择了1个以上的项目并且按下了“删除所选项目”按钮时,我将尝试删除所选项目(工作正常),并从HashMap中删除它们的记录。但是,出于某种原因,如果我选择了1个以上的元素,则只会删除HashMap中的第一条记录。我不明白这对JList如何起作用,但对HashMap不起作用。我的代码如下: remove.addActionListener(new Act

我有一个JList,其中包含一些允许多个选择的元素。在将这些元素添加到JList之前,有关它们的一些信息将存储在单独类中的静态HashMap中。当选择了1个以上的项目并且按下了“删除所选项目”按钮时,我将尝试删除所选项目(工作正常),并从HashMap中删除它们的记录。但是,出于某种原因,如果我选择了1个以上的元素,则只会删除HashMap中的第一条记录。我不明白这对JList如何起作用,但对HashMap不起作用。我的代码如下:

remove.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent e) {

                    Object[] selectedElementsValues = jList.getSelectedValues();

                    for (int i = 0; i < selectedElementsValues.length; i++) {
                        System.out.println(jList.getSelectedValue().toString());
                        System.out.println(PersonClass.map.get(jList.getSelectedValue().toString()));

PersonClass.map.remove(jList.getSelectedValue().toString());

System.out.println(PersonClass.map);

                }
remove.addActionListener(新ActionListener(){
@凌驾
已执行的公共无效操作(操作事件e){
对象[]selectedElementsValues=jList.getSelectedValues();
for(int i=0;i
如果一次只选择一个项目并将其删除,则效果很好。但不能使用多个选择。但是,JList中的项目已正确删除,因此我不明白为什么对地图不这样做


Thx

问题在于,当未修改
jList
选择时,从映射中删除项目的循环使用
jList.getSelectedValue().toString()
。您可以使用先前获得的选择数组:

for (Object o : selectedValues) {
    PersonClass.map.remove(o.toString());
}

请注意,
getSelectedValues()
已被弃用,您应该改用
getSelectedValuesList()

我认为您的问题在于,映射中的删除不会像Jlist那样使用索引。