java - 如何删除JAVA中Set的Arraylist中存储的某个集合中的元素?

标签 java arraylist set

我在删除 JAVA 中 Set 的 Arraylist 中存储的某个集合中的元素时遇到问题。

我的代码是这样的:

public class Classroom {

    private ArrayList<Set<Integer>> arrSetSlot;
    private Set<Integer> SetSlot;

    public Classrom(){
        arrSetSlot = new ArrayList();
    }

    public ArrayList<Set<Integer>> getHimpWaktu_tersedia() {
        return arrSetSlot;
    }

    public void addSlotWaktu(int kromosom, int Slot){
        arrSetSlot.get(kromosom).add(Slot);
    }    

    public void addSlotWaktu(Set<Integer> SetSlot){
        arrSetSlot.add(SetSlot);
    }
}


public class Inisialisasi {
    ArrayList<Classrom> arrClassroom;
    Set<Integer> SetSlot;
    Database d;

    public Inisialisasi(){
        arrClassroom=new ArrayList();
        SetSlot=new HashSet();
        d = new Database();
        loadDatabase();
        validasiData();
    }

    private void loadDatabase(){
        for (int i=1;i<41;i++){
            SetSlot.add(i);
        }

        rs=d.getData("select* from kelas");
        try {
            while(rs.next()){
                Classroom kelas = new Classroom();
                kelas.setIdKelas(rs.getString("id_kelas"));
                kelas.setKodeKelas(rs.getString("kode_kelas"));
                for(int i=0;i<3;i++){
                    kelas.addSlotWaktu(SetSlot);
                }
                arrKelas.add(kelas);
            }
        } catch (SQLException ex) {
            Logger.getLogger(Inisialisasi.class.getName()).log(Level.SEVERE, null, ex);
        }

    }

    private void validasiData(){
        //the problematic remove
        arrKelas.get(2).getHimpWaktu_tersedia().get(2).remove(1);
        for (int i=0;i<arrKelas.get(1).getHimpWaktu_tersedia().size();i++){
            System.out.println(arrKelas.get(1).getHimpWaktu_tersedia().get(i).size());
        }
    }
}

当我尝试使用此函数从数组中的某些集合中删除元素时: Classroom.getArrSetSlot.get(1).remove(1);

它不仅从第一个集合中删除元素“1”,而且从数组列表中的所有集合中删除元素“1”..

这个问题有什么解决办法吗? 谢谢

最佳答案

嗯,

public void addSlotWaktu(Set<Integer> SetSlot){
    arrSetSlot.add(SetSlot);
}

应该是

public void addSlotWaktu(Set<Integer> SetSlot){
    arrSetSlot.add(new HashSet<Integer>(SetSlot));
}

假设您想要在插槽中获得该组的新独立副本。

关于java - 如何删除JAVA中Set的Arraylist中存储的某个集合中的元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10404968/

相关文章:

java - ArrayList.contains() 对比 HashMap.containsKey() 对比 HashMap.get()

java - JNLP 不下载操作系统资源

java - 我的程序似乎写得很完美,但停止运行并允许用户在没有扫描仪的情况下输入?

class - 将List <object>添加到类

java - Java 中出现错误 "package X does not exist"

c++ - 为什么我不能使用迭代器将 unique_ptr 从集合 move 到函数参数?

python - 为每个键构建一个字典,一组来自元组列表的关联值

python - list、tuple、dict底层数据结构

java - 如何使用 Necessitas(qt 端口)构建我的 HelloWorld Android 应用程序?

java - 如何从其他应用程序监控android studio中的网络搜索