我有一个String数组,它包含字符串和整数的组合。我需要对字符串进行排序并在最后添加整数。这是我写的程序。任何优化都会有所帮助。
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.Arrays; import java.util.List; public class SortStringandAddIntegerEx { public static void main(String[] args) throws IOException { System.out.println("Enter the characters"); BufferedReader read = new BufferedReader(new InputStreamReader(System.in)); String input = read.readLine(); String[] inputArray = { input }; List<String> result = new ArrayList<String>(); String stringChars = ""; String sortedCharacters = ""; int sum = 0; for (int i = 0; i < inputArray.length; i++) { stringChars = stringChars + inputArray[i]; } for (int j = 0; j < stringChars.length(); j++) { if (Character.isDigit(stringChars.charAt(j))) { sum = sum + Integer.parseInt(stringChars.valueOf(stringChars.charAt(j))); } else { sortedCharacters = sortedCharacters + stringChars.charAt(j); } } char[] chars = sortedCharacters.toCharArray(); Arrays.sort(chars); String sorted = new String(chars); result.add(sorted + " " + sum); for (int k = 0; k < result.size(); k++) { System.out.println("Final output is " + result.get(k)); } } }
任何帮助都将不胜感激。
答案 0 :(得分:0)
在查看你的代码一段时间之后我真的看不到除了简单语法之外的任何改进以减少代码长度,性能明智的你真的已经覆盖了没有正则表达式,实际上没有很多其他选项来查找字符串中的int除了测试每个字符,甚至测试你使用的方法,假设你一次传入每一行1遵循这个性能原则:
对于长度为1到256个字符的字符串,调用string.charAt(i) 赢得平均处理量为1340万至5.88亿 每秒字符数。 Source
对于长字符串,长度为512到256K,使用反射来 访问String的后备阵列是最快的。这种技术差不多 比String.charAt(i)快两倍(快178%)。平均速度 超过这个范围是每秒11.11亿个字符。
我唯一的建议是可读性:
for (String inputArray1 : inputArray) {
stringChars = stringChars + inputArray1;
}
可能没有任何真正的帮助,因为代码似乎利用了最佳实践。无论如何,祝你工作顺利!