Java 获取字符串列表,并将arraylist中的每个字符加倍

Java 获取字符串列表,并将arraylist中的每个字符加倍,java,Java,我试图在数组循环中使字符串列表中的每个字母加倍 例如: [“abc”、“def”]-->[“aabbcc”、“ddeeff”] arraylistaa; aa=新的ArrayList(); 字符串res=“”; 对于(int i=0;i您的实现存在一些问题: 您通过单词数组进行交互,但在aa上使用索引。由于从未向其添加项目,您将获得数组索引OutofBoundsException 您发出一个返回res,但这将只返回一个字符串,而不是一个单词数组 根据您的示例,这可以通过以下方式完成: pub

我试图在数组循环中使字符串列表中的每个字母加倍

例如: [“abc”、“def”]-->[“aabbcc”、“ddeeff”]

arraylistaa;
aa=新的ArrayList();
字符串res=“”;

对于(int i=0;i您的实现存在一些问题:

  • 您通过
    单词
    数组进行交互,但在
    aa
    上使用索引。由于从未向其添加项目,您将获得
    数组索引OutofBoundsException
  • 您发出一个
    返回res
    ,但这将只返回一个字符串,而不是一个单词数组
根据您的示例,这可以通过以下方式完成:

public static ArrayList<String> doubleWords(ArrayList<String> input) {
  ArrayList<String> result = new ArrayList<>();
  for (String string : input) {
     String word = "";
     for (int i = 0; i < string.length(); i++) {
        word += ""+string.charAt(i)+string.charAt(i);
     }
     result.add(word);
  }
  return result;
}
公共静态ArrayList双字(ArrayList输入){
ArrayList结果=新建ArrayList();
for(字符串:输入){
字串=”;
对于(int i=0;i

带有
[abc,def]
ArrayList
的输出将是
[aabbcc,ddeeff]

您需要遍历单词列表,然后针对列表中的每个单词遍历字符串中的字符,如下所示:

public ArrayList<String> doubleWords(ArrayList<String> words) {
    ArrayList<String> doubledWords = new ArrayList<String>();
    for (String word : words) {
        String newWord = "";
        for (int i=0; i<word.length(); i++) {
            newWord = newWord + word.substring(i, i+1) + word.substring(i, i+1);
        }
        doubledWords.add(newWord);
    }
    return doubledWords;
}
公共ArrayList双字(ArrayList字){
ArrayList doubledWords=新的ArrayList();
for(字符串字:字){
字符串newWord=“”;

对于(int i=0;i,由于Java 8,这也可以通过以下方式实现:

String input = "abc";
StringBuilder builder = new StringBuilder();
input.chars().forEach(value -> builder.append((char)value).append((char)value));
在追加
int
值之前,请记住将其转换回
char

上述程序的输出:

System.out.println(builder.toString());
// aabbcc
//响应列表
ArrayList aa;
aa=新的ArrayList();
StringBuilder sb=新的StringBuilder();
字符串字;
//迭代单词列表
for(int i=0;i
它只能由java流api完成,而不需要任何临时变量:

List<String> result = listOfWords.stream().
        map(value -> String.valueOf(                          // new result String(doubled word)
            value.chars()                                     // get chars for each original string
                .mapToObj(i-> (char)i)                        // cast each char from int to char type
                .map(c -> String.valueOf(new char[]{c, c}))   // create doubled char string
                .collect(Collectors.joining())))              // concatenate all doubled chars
        .collect(Collectors.toList());                        // collect result to list
List result=listOfWords.stream()。
map(value->String.valueOf(//新结果字符串(双字)
value.chars()//获取每个原始字符串的字符
.mapToObj(i->(char)i)//将每个字符从int转换为char类型
.map(c->String.valueOf(新字符[]{c,c}))//创建双字符字符串
.collect(Collectors.joining())//连接所有双字符
.collect(Collectors.toList());//收集要列出的结果

Hi,请在您提供代码时提供一个。当前,当我尝试运行您的代码时,我收到两个错误:
words
未定义;
aa.get(I)
给出了一个
不兼容类型的错误,因为
get()
返回一个
字符串
,但是您需要一个
字符
@natn2323。很抱歉没有定义。“words”是字符串列表,我需要在其中加倍字符。如果您要追加两次以上,我建议您循环执行
追加
,而不是追加更多次。
  //response list
 ArrayList<String> aa; 
aa = new ArrayList<String>();


StringBuilder sb = new StringBuilder() ;
String word;
 // iterate list of words
for(int i=0; i < words.size(); i++){
        //get word 
        word = words.get(i);
         //iterate each character in word
        for(int j =0; j < words; j++) {
        //append each char twice in StringBuilder 
        sb.append(word[j).append(word[j]);
       } 
     //add word to output list 
    aa.add(sb.toString());
     //empty StringBuilder for next word
     sb.setLength(0);
} 

return aa;
List<String> result = listOfWords.stream().
        map(value -> String.valueOf(                          // new result String(doubled word)
            value.chars()                                     // get chars for each original string
                .mapToObj(i-> (char)i)                        // cast each char from int to char type
                .map(c -> String.valueOf(new char[]{c, c}))   // create doubled char string
                .collect(Collectors.joining())))              // concatenate all doubled chars
        .collect(Collectors.toList());                        // collect result to list