Мне нужна помощь, потому что я не могу разбить String с помощью contentEquals (). В этом примере я хочу удалить последний символ, если строка «seq» будет такой же, как какое-то число в списке (867), чем stop. Более продвинуться вперед после поиска String, чтобы добавить их в новый ArrayList, чем пытаться найти остальную часть String (75). Список ArrayList может содержать сотни элементов, их всего несколько, некоторые элементы в списке могут повторяться более одного раза. Если найдено, разделите 86775 ... на 867: 75 .... 867 удалит из String seq и добавит в новый ArrayList. Наконец, мы должны найти также 75, если они не существуют, разделить на 7: 5 и попытаться найти 7 и 5 и так далее. В моем списке всегда есть одиночные числа, поэтому никаких проблем с исключениями. Если вы хотите использовать метод разделения всегда, мне нужно найти как можно большее число, чем если бы не было найдено разделение и удаление последнего, но каждого di git, которое мне нужно. Строка seq может содержать даже 20 символов или больше. Основная проблема - это решение: Новый список: [86, 7, 5, 9, 8, null], но должен быть: Новый список: ["86, 7, 7, 5, 5, 86, 97, 8, 7» ] Также мой метод: getContinue - это childi sh. Спасибо за помощь.
public class Main {
public static void main(String[] args) {
String[] stringArray = {"86","97", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "20", "30", "40", "50", "60", "70", "80", "90"};
ArrayList<String> list = new ArrayList(Arrays.asList(stringArray));
List<String> newList = new ArrayList<>();
System.out.println("List = " + list);
String seq = "867755869787";
System.out.println("New list: " + getContinue(seq, stringArray));
}
private static String search(ArrayList<String> list, String seq) {
while (seq.length() > 0) {
System.out.println("analyzing seq: " + seq);
// boolean broken = false;
for (String s : list) {
if (seq.contentEquals(s)) { // if matched
System.out.println("found match: " + s);
// do your logic, for example
seq = seq.replace(s, "");
// quit the loop at right place
return s;
}
}
seq = seq.substring(0, seq.length() - 1);
}
return null;
}
private static String getContinue(String seq, String[] stringArray) {
List<String> newList = new ArrayList<>();
ArrayList<String> list = new ArrayList(Arrays.asList(stringArray));
String result = search(list, seq);
newList.add(result);
String resultSplit1 = seq.replace(result, "");
if (resultSplit1.length() > 2) ;
String result2 = search(list, resultSplit1);
newList.add(result2);
String resultSplit2 = resultSplit1.replace(result2, "");
if (resultSplit2.length() > 2) ;
String result3 = search(list, resultSplit2);
newList.add(result3);
String resultSplit3 = resultSplit2.replace(result3, "");
if (resultSplit3.length() > 2) ;
String result4 = search(list, resultSplit3);
newList.add(result4);
String resultSplit4 = resultSplit3.replace(result4, "");
if (resultSplit4.length() > 2) ;
String result5 = search(list, resultSplit4);
newList.add(result5);
String resultSplit5 = resultSplit4.replace(result5, "");
if (resultSplit5.length() > 2) ;
String result6 = search(list, resultSplit5);
newList.add(result6);
return String.valueOf(newList);
}
}'''