В настоящее время мое приложение продолжает зависеть от метода, который я создал, который анализирует String (Not String []) в Set.Разбор строки в HashSet
Как оптимизировать метод parseTopicString()?
Этот метод принимает HashSet и преобразует его значения в длинную строку, например {string1} {string2} {string3} ... и так далее, в зависимости от количества элементов в наборе в любое заданное время.
private String genTopicString(Set<String> topicSet) {
StringBuilder res = new StringBuilder();
for (String str : topicSet) {
res.append("{").append(str).append("}");
}
return res.toString();
}
Этот метод, я считаю, имеет проблему, он преобразует эту строку в набор.
private Set<String> parseTopicString(String str) {
Set<String> res = new HashSet<String>();
String currentStr = str;
while (currentStr.split("\\{").length >= 2) {
String[] parts = currentStr.split("\\{");
if (parts[0].split("\\}").length >= 2) {
res.add(parts[0].split("\\}")[0]);
currentStr = parts[0].split("\\}")[1];
}
}
return res;
}
Это когда приложение получает повесила
if (!(prefs.getString(CURRENT_TOPICS, "").isEmpty())) {
currentTopics = parseTopicString(prefs.getString(CURRENT_TOPICS, ""));
saveServiceTopics();
}
шаг через в отладчик и посмотреть, что происходит с 'currentStr'. –
[1] Если исключение убивает поток, оберните весь код в try/catch (Throwable) и распечатайте исключение где-нибудь там, где вы его увидите. [2] изолировать проблематичные входные данные и запускать эти данные во время прохождения через отладчик [3]. Если программа по-настоящему висит (тупиковая/живая или бесконечная петля), затем получите дамп потока трассировки стека и точно определите, какой метод и строка кода заблокирована. –
Что такое 'prefs'? Это объект android 'SharedPreferences'? Если да, почему вы не можете использовать 'putStringSet'? –