Преобразование .toArray из ArrayList в массив, путаница с типами данных

Я запутался с приведением типов с этой проблемой.

У меня есть ArrayList символов, которые я хочу преобразовать в строку — массив символов. Итак, это происходит примерно так:

ArrayList<Character> message = new ArrayList<Character>();
String stringMessage = new String;
stringMessage = message.toArray(stringMessage);

Теперь выдается ошибка:

"Синтаксическая ошибка, возможно, отсутствует точка с запятой?"

что не очень полезно.

Что-то не так с тем, как я разыграл это? Разве нельзя преобразовать ArrayList символов в String?


person Tobias Tovedal    schedule 19.03.2014    source источник
comment
new String ‹-- здесь ошибка. И message.toArray() будет принимать только массив в качестве аргумента, а stringMessage - нет.   -  person fge    schedule 20.03.2014
comment
Даже если toArray принимает String в качестве аргумента (это не так), он все равно возвращает массив   -  person Engineer2021    schedule 20.03.2014
comment
возможный дубликат преобразования ArrayList символов в строку?   -  person Engineer2021    schedule 20.03.2014
comment
Первую ошибку можно устранить, просто написав String stringMessage;. Но что вы действительно пытаетесь сделать? Третья строка не имеет смысла.   -  person Axel    schedule 20.03.2014
comment
Чтобы уточнить: я использую ArrayList, поскольку он имеет некоторые преимущества при обработке данных во время программы, но для функций, которые могут обрабатывать только объект String, мне нужно выполнить это преобразование. Спасибо всем за быстрые ответы, код fge решил мою проблему.   -  person Tobias Tovedal    schedule 20.03.2014


Ответы (1)


Ты можешь это сделать:

final CharBuffer buf = CharBuffer.allocate(message.size());
for (final Character c: message)
    buf.put(c.charValue());
stringMessage = new String(buf.array());

Вы не можете использовать .toArray() напрямую, так как он вернет Character[], а не char[], и нет конструктора String, принимающего Character[] в качестве аргумента...

person fge    schedule 19.03.2014