取得字符串列表,并将数组列表中的每个字符加倍

时间:2018-10-19 16:03:39

标签: java

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

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

    ArrayList<String> aa;
    aa = new ArrayList<String>();

    String res = "";

    for(int i=0;i<words.size();i++){
        char at = aa.get(i);
        res=res+at+at;
    }
    return res;

我还是编码新手,如您所见,我的代码很烂。感谢帮助。预先感谢

5 个答案:

答案 0 :(得分:0)

您的实现存在一些问题:

  • 您在words数组上进行了交互,但在aa上使用了索引。由于从未添加任何物品,因此您将获得ArrayIndexOutOfBoundsException
  • 您发出return 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的{​​{1}}的输出将是[abc, def]

答案 1 :(得分:0)

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

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;
}

答案 2 :(得分:0)

从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

答案 3 :(得分:0)

  //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;

答案 4 :(得分:0)

只能由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