Code Elegance:Java Strings

时间:2016-04-18 19:58:50

标签: java string

一个程序,它接受字符串的前两个字符并将它们添加到字符串的前面和后面。哪个版本更好?

public String front22(String str) {
  if(str.length()>2) return str.substring(0,2)+str+str.substring(0,2);
  return str+str+str;
}

public String front22(String str) {
  // First figure the number of chars to take
  int take = 2;
  if (take > str.length()) {
     take = str.length();
 }

  String front = str.substring(0, take);
  return front + str + front;
}

前者让我觉得更优雅。后者更容易理解。任何其他改进的建议都非常受欢迎!

1 个答案:

答案 0 :(得分:1)

第一个选项的问题,主要是因为string是不可变的。 [编辑。]正如@Pshemo正确指出的那样,我的陈述不清楚。引用@Pshemo,"executing same substring twice is inefficient when we can reuse result from first substring"

使用StringBuilder

StringBuilder sb = new StringBuilder(str);
CharSequence seq = sb.subSequence(0,2);
sb.insert(0, seq);
sb.append(seq);
return sb.toString();