gpt4 book ai didi

java - 如何从 HashMap 中删除值?

转载 作者:行者123 更新时间:2023-12-01 11:24:54 25 4
gpt4 key购买 nike

问题是,我有一个包含 2 个组的 ExpandableListView,每个组内都有一些用户,当我单击这些用户时,我会获取他们的 ID 并添加到字符串的 HashMap 中,现在我正在尝试删除这些用户当我第二次点击它们时,有 ids,但第二组的 ids 没有被删除。这就是我正在尝试做的事情:

aMap = new HashMap < String, GPSEscolas > ();
TextView idAluno = (TextView) v.findViewById(R.id.idcrianca);
TextView idEscola = (TextView) v.findViewById(R.id.idescola);

IdEscola = String.valueOf(idEscola.getText());
IdAluno = String.valueOf(idAluno.getText());


mGpsEscolas = aMap.get(IdEscola);
if (mGpsEscolas == null) {
mGpsEscolas = new GPSEscolas();
aMap.put(IdEscola, mGpsEscolas);
mGpsEscolas.getIds_alunos().add(String.valueOf(IdAluno));
mGpsEscolas.setAlunos(IdAluno);

} else {


Set < String > ia = mGpsEscolas.getIds_alunos();


if (!ia.contains(IdAluno)) {
ia.add(String.valueOf(IdAluno));

} else {
alunos = aMap.get(IdEscola).getAlunos();
ia.remove(IdAluno);

aMap.remove(alunos);

}

stringArray = new String[ia.size()];
out = "";
if (ia.size() > 0) {

for (String str: ia.toArray(stringArray)) {
out += ";" + str;
}

aMap.get(IdEscola).setAlunos(out.substring(1));
}
}

型号:

public class GPSEscolas  implements Serializable{

private static final long serialVersionUID = 1L;


private Integer id_escola;
private Set<String> ids_alunos = new TreeSet<String>();
private String Alunos;
private double distancia;
private Float latitude;
private Float longitude;


public String getAlunos() {
return Alunos;
}

public void setAlunos(String alunos) {
Alunos = alunos;
}

public Integer getId_escola() {
return id_escola;
}

public void setId_escola(Integer id_escola) {
this.id_escola = id_escola;
}

public Set<String> getIds_alunos() {
return ids_alunos;
}

public void setIds_alunos(Set<String> ids_alunos) {
this.ids_alunos = ids_alunos;
}

public double getDistancia() {
return distancia;
}

public void setDistancia(double distancia) {
this.distancia = distancia;
}

public Float getLatitude() {
return latitude;
}

public void setLatitude(Float latitude) {
this.latitude = latitude;
}

public Float getLongitude() {
return longitude;
}

public void setLongitude(Float longitude) {
this.longitude = longitude;
}


}

最佳答案

我假设您指的是这一行:

aMap.remove(alunos);

...这是您尝试从 HashMap 中删除的唯一位置。

如果是这种情况,问题在于您没有将正确的参数值传递给 aMap.remove()。该方法要求您传递一个 key 值,例如 IdEscola 是什么,这是您用于在中执行 put 的键值HashMap

但是,您传递的是 alunos,我不太确定那是什么,但它看起来像是一个学生列表。

所以我认为你想做的就是简单地执行aMap.remove(IdEscola)

编辑:我现在意识到你的 HashMap 是由学校键入的,所以我改变了我的答案。

编辑 2:如果以上不是您想要的,那么您可能不想从该 HashMap 中删除任何内容。

关于java - 如何从 HashMap 中删除值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30899755/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com