3

什么是相反的:

savedPlanets.append(planet.getDisplayName()+",");

我有一个列表,每次用户单击复选框时我都会添加行星的名称,如果清除该复选框,我想从 savedPlanets 中删除名称

4

4 回答 4

3

您可以执行以下操作:

 savedPlanets.replace(planet.getDisplayName(),"");

理想情况下,我会做如下解决方案:

Set<String> selectedPlanets = new HashSet<String>();

selectedPlanets.add(planet.getDisplayName());        // Whenever a planet is selected
selectedPlanets.remove(planet.getDisplayName());     // Whenever a planet is removed 

// Prepare a String with all planets        
StringBuilder savedPlanets = new StringBuilder("");
for(String planetName : selectedPlanets ){
    savedPlanets.append(planetName).append(",");
}
// Removing , from the end if any       
if(savedPlanets.toString().endsWith(","))
    finalValue = savedPlanets.substring(0, savedPlanets.length()-1);

// finalValue is what you are looking for
于 2012-09-10T14:06:10.943 回答
1

我每次都会重建字符串,只包含你想要包含的元素。

例如

Set<Planet> planets = ...
StringBuilder sb = new StringBuilder();
String sep = "";
for(Planet planet: planets) {
   sb.append(sep).append(planet.getDisplayName());
   sep = ",";
}
String planetNames = sb.toString();
于 2012-09-10T14:07:53.487 回答
0

我认为您正在使用 StringBuffer 或类似的东西。在这种情况下,这不是一个好的解决方案,我建议您使用 Set。http://docs.oracle.com/javase/6/docs/api/java/util/Set.html

像这样实现它:

Set planets = new HashSet();
planets.add("a");
planets.add("b");
planets.remove("a");
于 2012-09-10T14:05:47.933 回答
0

假设... StringBuffer savedPlanets...

附加: savedPlanets.append(planet.getDisplayName()+",");

附录的对面: savedPlanets.replaceAll(planet.getDisplayName()+",","");

前任:

savedPlanets.append("Earth,");
savedPlanets.append("Mercury,");
savedPlanets.append("Venus,");

现在保存的Planetes =“地球,水星,金星,”;

然后

savedPlanets.replaceAll("Venus,",""); <-----

现在值将被保存Planetes= "Earth,Mercury,";

于 2012-09-10T14:08:27.390 回答