Я пишу мобильное приложение в студии Android. У меня есть список массивов, который я преобразовываю в строку для оценки в механизме сценариев.
сейчас я использую
resultText = total.stream().collect(Collectors.joining(""));
С полным существом
ArrayList<CharSequence> total = new ArrayList<>();
Текущий ввод-вывод выглядит примерно так
CharSequence [1,+,2] --> .Stream() "1+2" --> .eval 3.0
Есть ли альтернативный способ получить этот вывод? В настоящее время я использую уровень API 28 для доступа к потоку, но мне требуется минимальный уровень API 19.
Метод .ToString() не получает требуемый результат.
CharSequence [1,+,2] --> .ToString "[1,+,2]" --> .eval NULL
Любая помощь будет принята с благодарностью.
Вы говорите, что преобразуете ArrayList в String в первом абзаце, а затем говорите, что total — это CharSequence. Итак, что это — ArrayList или CharSequence?
total — это ArrayList<CharSequence>. Я обновлю вопрос, чтобы сделать его более ясным. total.ToString сохраняет квадратные скобки и запятые в структуре ArrayLists и не может быть оценен ScriptEngine.




Вы можете использовать класс TextUtils.
List<Character> list = new ArrayList<>(Arrays.asList(
'1', '+', '2'
));
String result = TextUtils.join("", list);
Базовый метод документацияjoin() был Added in API level 1
Точно такая же функциональность доступна как String.join() в Java 8.
Вы можете использовать следующее:
resultText = total.toString(); // where total is CharSequence Array.
ваша функция eval должна работать с этим.
Что вы подразумеваете под «массивом CharSequence»? Разве это не просто CharSequence?
Если вы говорите о
java.lang.CharSequence, тоtotal.toString()сделает то, что вы хотите.