arraylist 转 char数组
时间: 2023-08-29 15:12:24 浏览: 55
可以使用toArray()方法将ArrayList转换为char数组,示例如下:
```java
ArrayList<Character> list = new ArrayList<>();
list.add('a');
list.add('b');
list.add('c');
char[] chars = new char[list.size()];
for (int i = 0; i < list.size(); i++) {
chars[i] = list.get(i);
}
System.out.println(Arrays.toString(chars));
```
输出结果为:[a, b, c]
相关问题
如何把char数组集合内的字符串 通过字节输出流 输出?
可以按照以下步骤实现:
1. 创建一个 ByteArrayOutputStream 对象,用于存储输出的字节流。
2. 遍历 char 数组集合,将每个字符串转换为字节数组,然后将其写入 ByteArrayOutputStream 中。
3. 将 ByteArrayOutputStream 转换为字节数组,然后使用 FileOutputStream 将其写入文件或其他输出流中。
以下是示例代码:
```java
import java.io.ByteArrayOutputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;
public class CharArrayOutputStreamExample {
public static void main(String[] args) {
ArrayList<String> strings = new ArrayList<>();
strings.add("Hello");
strings.add("World");
strings.add("!");
// 创建 ByteArrayOutputStream 对象
ByteArrayOutputStream baos = new ByteArrayOutputStream();
// 遍历 char 数组集合,将每个字符串转换为字节数组,然后写入 ByteArrayOutputStream
for (String s : strings) {
byte[] bytes = s.getBytes();
try {
baos.write(bytes);
} catch (IOException e) {
e.printStackTrace();
}
}
// 将 ByteArrayOutputStream 转换为字节数组
byte[] byteArray = baos.toByteArray();
// 使用 FileOutputStream 将字节数组写入文件
try (FileOutputStream fos = new FileOutputStream("output.txt")) {
fos.write(byteArray);
System.out.println("写入成功!");
} catch (IOException e) {
e.printStackTrace();
}
}
}
```
上述代码将 char 数组集合中的字符串转换为字节数组,并通过 FileOutputStream 写入到文件中。
如何把String类型的对象分成字符,每5个字符存储到char数组集合当中,并只存储对象内的汉字
可以按照以下步骤来实现:
1. 将String对象转换为char数组。
2. 遍历char数组,判断每个字符是否为汉字。
3. 如果是汉字,则将其存储到一个StringBuilder对象中。
4. 每存储5个汉字,将StringBuilder对象中的内容转换为char数组,并添加到char数组集合中。
5. 如果最后StringBuilder对象中还有未满5个汉字的内容,则将其转换为char数组并添加到char数组集合中。
代码示例:
```java
public List<char[]> splitString(String str) {
List<char[]> result = new ArrayList<>();
char[] chars = str.toCharArray();
StringBuilder sb = new StringBuilder();
int count = 0;
for (char c : chars) {
if (isChinese(c)) { // 判断是否为汉字
sb.append(c);
count++;
if (count == 5) { // 每5个汉字存储一次
result.add(sb.toString().toCharArray());
sb = new StringBuilder();
count = 0;
}
}
}
if (sb.length() > 0) { // 最后一次存储剩余的汉字
result.add(sb.toString().toCharArray());
}
return result;
}
private boolean isChinese(char c) {
Character.UnicodeBlock ub = Character.UnicodeBlock.of(c);
return ub == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS
|| ub == Character.UnicodeBlock.CJK_COMPATIBILITY_IDEOGRAPHS
|| ub == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A
|| ub == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS_EXTENSION_B
|| ub == Character.UnicodeBlock.CJK_SYMBOLS_AND_PUNCTUATION
|| ub == Character.UnicodeBlock.HALFWIDTH_AND_FULLWIDTH_FORMS
|| ub == Character.UnicodeBlock.GENERAL_PUNCTUATION;
}
```
以上代码中的isChinese方法用于判断一个字符是否为汉字,可以根据自己的需求进行修改。