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