如何在Java中实现与StringBuilder相反的追加?

如何在Java中实现与StringBuilder相反的追加?,java,Java,与之相反的是: savedPlanets.append(planet.getDisplayName()+","); 我有一个列表,每次用户单击复选框时,我都会添加行星的名称。如果复选框被清除,我想从保存的行星中删除该名称。我想你是在使用StringBuffer之类的东西。在这种情况下,这不是一个好的解决方案,我建议您使用Set 这样实施: Set planets = new HashSet(); planets.add("a"); planets.add("b"); planets.remov

与之相反的是:

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

我有一个列表,每次用户单击复选框时,我都会添加行星的名称。如果复选框被清除,我想从保存的行星中删除该名称。我想你是在使用StringBuffer之类的东西。在这种情况下,这不是一个好的解决方案,我建议您使用Set

这样实施:

Set planets = new HashSet();
planets.add("a");
planets.add("b");
planets.remove("a");
您可以执行以下操作:

 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
理想情况下,我会执行以下解决方案:

 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
Set selectedPlanets=new HashSet();
selectedPlanets.add(planet.getDisplayName());//无论何时选择行星
已选择Planets.remove(planet.getDisplayName());//每当行星被移走
//准备一根包含所有行星的绳子
StringBuilder savedPlanets=新StringBuilder(“”);
用于(字符串planetName:SelectedPlanetName){
savedPlanets.append(planetName).append(“,”);
}
//如果有,从末端移除
if(savedPlanets.toString().endsWith(“,”))
finalValue=savedPlanets.substring(0,savedPlanets.length()-1);
//最终价值就是你想要的

每次我都会重新生成字符串,只包含您想要包含的元素

e、 g

设置行星=。。。
StringBuilder sb=新的StringBuilder();
字符串sep=“”;
对于(行星:行星){
sb.append(sep.append(planet.getDisplayName());
sep=“,”;
}
String planetNames=sb.toString();
假设。。。 StringBuffer保存的计划…

追加:
savedPlanets.APPEND(planet.getDisplayName()+“,”)

与APPEND相反:
savedPlanets.replaceAll(planet.getDisplayName()+“,”,”)

EX:

savedPlanets.append("Earth,");
savedPlanets.append("Mercury,");
savedPlanets.append("Venus,");
现在savedPlanetes=“地球、水星、金星”

然后


savedPlanets.replaceAll(“维纳斯,”,”);去除美妙之处在于你可以宣布你想要的是什么。。也许destroyPlanet():)savedPlanets是一个字符串。如何实现一组数据?如果savedPlanet是一个字符串,只需将其替换为空即可string@Randy我该如何实现这一点?我不能清空字符串,因为我需要其他值来创建一个新类。为addPlanet、RemovePlanet创建方法。。等等。还包括toString()以获取您试图在此处创建的字符串。想法不错。但这真的是一张地图或一套类似的东西。然后字符串是一个toString函数返回值。我不想自己构建字符串,而是使用一个字符串/集合实用程序库(Guava的Joiner或Commons StringUtils),它采用类似的方法,但不使用substring复制字符串对象,并且在使用的分隔符中非常灵活(读:更高的重用性)好办法。ApacheCommonsStringUtils非常灵活,可以很好地处理这个问题,就像Guava的Joiner库一样。我倾向于在任何规模的项目中使用它们。例如,StringUtils优化了StringBuilder的初始大小并优雅地处理空值。