Java String Concatenation

旧城冷巷雨未停 提交于 2019-12-31 03:18:04

问题


I have a issue with my java code. i asked the same question yesterday. I got answer but sorry it was my fault. My question is not clear.

I have code looks like this:

 for(i = 0; i < geo.getTargets().length ; i++ )
    {
        if(geo.getTargets(i).getTargetType().equalsIgnoreCase("ProximityTarget"))
        {
            final ProximityTarget prox = (ProximityTarget)geo.getTargets(i);
            prox.getGeoPoint().getLatitudeInMicroDegrees(); 
            prox.getGeoPoint().getLongitudeInMicroDegrees();
            prox.getRadiusDistanceUnits();
        }
    }

The above three method will give me some values.

I want these values to be place in this format:

circle:long:lat:radius | circle:long:lat:radius | .....

Can any one help me in fixing this code. I would like these value to be concatenated in a single string in order to insert it into my database field.


回答1:


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;



回答2:


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();



回答3:


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();

    //...
}



回答4:


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.




回答5:


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.




回答6:


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




回答7:


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();  


来源:https://stackoverflow.com/questions/3547347/java-string-concatenation

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