2016-07-26 2 views
0

У меня есть массив String, который содержит как комбинацию строк, так и целых чисел. Мне нужно отсортировать строки и добавить целые числа в конце. Вот программа, которую я написал. Любая оптимизация была бы полезна.StringSortingandIntegerAddition без регулярного выражения

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

После того, как я просмотрел ваш код некоторое время, я не могу увидеть какие-либо улучшения, кроме простого синтаксиса, чтобы уменьшить длину кода, производительность, которую вы действительно используете, так как без регулярного выражения действительно не так много других вариантов поиска int в строка кроме тестирования каждого персонажа и даже метода, который вы использовали при условии, вы передаете в каждой строке 1, в то время придерживается этого принципа производительности:

для строк 1 до 256 символов в длине, призывающие String.charAt (я) выигрывает со средней обработкой 13,4 млн. До 588 млн. символов в секунду. Source

Для длинных строк, 512 до 256K длины символов, с помощью отражения для доступа массив поддержки Строки является самым быстрым. Этот метод почти в два раза быстрее, чем String.charAt (i) (178% быстрее). Средняя скорость в этом диапазоне составляла 1,111 миллиарда символов в секунду.

Единственные предложения я есть являются для читаемости:

for (String inputArray1 : inputArray) { 
     stringChars = stringChars + inputArray1; 
    } 

вероятно не реальной помощи, так как код, кажется, использовать лучшие практики. В любом случае удачи в вашей работе!

+0

Цените свое предложение Я попробую, как вы предложили. Спасибо – Pradeep

Смежные вопросы