Java String Concatenation

五迷三道 提交于 2019-12-02 01:10:13

This is the basic way of doing what you asked for with String + operator.

  String result = "";
    for(i = 0; i < geo.getTargets().length ; i++ ){
      if(geo.getTargets(i).getTargetType().equalsIgnoreCase("ProximityTarget")){
        final ProximityTarget prox = (ProximityTarget)geo.getTargets(i);
        float longitude = prox.getGeoPoint().getLatitudeInMicroDegrees()); 
        float lat = prox.getGeoPoint().getLongitudeInMicroDegrees());
        float radius = prox.getRadiusDistanceUnits();

        if (!result.isEmpty()) {
            result += "|";
        }

        result += ("circle:" + longitude + ":" + lat + ":" + radius);
      }
    }

    return result;

Try this:

StringBuilder sb = new StringBuilder();
for(i = 0; i < geo.getTargets().length ; i++ ){
  if(geo.getTargets(i).getTargetType().equalsIgnoreCase("ProximityTarget")){
    final ProximityTarget prox = (ProximityTarget)geo.getTargets(i);
    float longitude = prox.getGeoPoint().getLatitudeInMicroDegrees()); 
    float lat = prox.getGeoPoint().getLongitudeInMicroDegrees());
    float radius = prox.getRadiusDistanceUnits();

    if (sb.isEmpty()) {
        sb.append("circle:" + longitude + ":" + lat + ":" + radius);
    else {
        sb.append(" | circle:" + longitude + ":" + lat + ":" + radius);
    }
  }
}
String result = sb.toString();
public String asString(ProximityTarget target) {
    StringBuilder sb = new StringBuilder("circle:");
    sb.append(target.getGeoPoint().getLatitudeInMicroDegrees()).append(":");
    sb.append(target.getGeoPoint().getLongitudeInMicroDegrees()).append(":");
    sb.append(target.getRadiusDistanceUnits());
    return sb.toString();
}

public void someMethod() {
    //...
    StringBuilder sb = new StringBuilder();
    for(i = 0; i < geo.getTargets().length ; i++ )
    {
        if(geo.getTargets(i).getTargetType().equalsIgnoreCase("ProximityTarget"))
        {
            final ProximityTarget prox = (ProximityTarget)geo.getTargets(i);

            if (!sb.isEmpty())
                sb.append("|");

            sb.append(asString(prox));
        }
    }
    String formattedString = sb.toString();

    //...
}

The most basic way of doing Java string concatenation is to use the + operator. Set up:

String value = string1 + string2 + string3;

There are other ways to do it, but this simple case should handle your needs. For further information, look into StringBuilder.

Depends on the kind of environment you're on. If you don't need thread safety, use stringbuilder. The stringbuffer class provides the necessary synchronisation when needed.

moreover, if it is possible to estimate the size of the concatenated string, you could use StringBuffer(int capacity)/StringBuilder(int capacity) to avoid resizing

Additions to Thierry-Dimitri Roys response.

StringBuilder sb = new StringBuilder();
ProximityTarget prox;
float latitude;
float longitude;
float radius;

//Use for-each if you process all elements
for(Target target : geo.getTargets()){

  //Use literal string first to avoid NullPointerException
  if("ProximityTarget".equalsIgnoreCase(target.getTargetType())){
    prox        = (ProximityTarget)geo.getTargets(i);
    latitude    = prox.getGeoPoint().getLatitudeInMicroDegrees()); 
    longitude   = prox.getGeoPoint().getLongitudeInMicroDegrees());
    radius      = prox.getRadiusDistanceUnits();

    //Checking sb every loop is not a good practice.
    //Instead try removing first delimeter after for-loop
    sb.append("|circle:" + longitude + ":" + latitude + ":" + radius);
  } 
}

//AFAIK StringBuilder has no isEmpty Method.
//So use length method
if (sb.length() > 0){
    sb.deleteCharAt(0);
}

String result = sb.toString();  
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!