![](/img/trans.png)
[英]Arraylist<String> into ArrayList<string> in java
[英]Concatenate string in Java arraylist
此代码给我输出-
first_name- [老虎,恩里克]
family_name- [伍兹,伊格莱西亚斯]
import java.util.*;
public class al_Concatenate {
public static void main(String args[]) {
// creating array list
ArrayList<String> first_name = new ArrayList<String>();
ArrayList<String> family_name = new ArrayList<String>();
Arraylist<String> name = new Arraylist<String>();
// add elements to the array list
first_name.add("Tiger");
first_name.add("Enrique");
family_name.add("Woods");
family_name.add("Iglesias");
name.??
//displaying the output
System.out.println("first_name- " + first_name);
System.out.println("family_name- "+ family_name);
System.out.println("name- "+ name);
}
}
但是我需要这样的输出(不使用循环,最好是单行代码) -
名字-[Tiger Woods,恩里克·伊格莱西亚斯]
提前致谢
我还想补充一点,arraylist的大小为2,但是在我的真实程序中大约为4500。我创建了这个示例以使其变得简单:)我编辑了一下帖子,对不起,它很麻烦:(
好吧,这很适合您(使用Java 8),即使它很愚蠢:
System.out.println(IntStream.range(0, first_name.size()).mapToObj(n -> first_name.get(n) + " " + family_name.get(n)).collect(Collectors.toList()).toString());
我已经对此进行了测试,并且可以正常工作(经过几次尝试)。
说明: IntStream.range
创建一个整数流,其顺序从0到first_name.size()-1
(这是一个半开范围)。 mapToObj
将该范围内的每个整数n
映射到一个字符串,该字符串是通过串联两个数组中的字符串并在其之间mapToObj
空格而创建的。 collect
然后创建一个List
通过创建的所有字符串mapToObj
。 与原始问题一样, List
的toString()
方法将字符串放在用逗号分隔的方括号中。 (我本toString()
因为println
会自动完成。)
PS:我不知道这个解决方案实际上是愚蠢的-这是对先前答案的开玩笑的参考。 函数式编程爱好者可能会认为这是一种更好的处理方法。 就个人而言,我不确定哪种方法更具可读性,但是如果您还不熟悉FP,则这种解决方案可能需要一些时间来适应。
遍历数组元素确实是解决问题的方法。 您可能会使用Java8 Streams来无循环地管理它,但这只是愚蠢的。
您必须使用for循环。 您不能遍历没有循环的数组。
for(int i = 0; i<Math.min(first_name.size(), family_name.size()); i++) {
System.out.println(first_name.get(i) + " " + family_name.get(i));
}
您可以使用映射而不是2个ArrayList? 您将得到类似:
Map<String, String> names = new HashMap<String, String>();
names.put("Tiger", "Woods");
names.put("Enrique", "Iglesias");
System.out.println("name - " + names);
输出为:
name - {Tiger=Woods, Enrique=Iglesias}
是否适合您的需求?
尝试使用以下方法来打印语句:
System.out.println(“ name-[” + first_name.get(0)+“” + family_name.get(0)+“,” + first_name.get(1)+“” + family_name.get(1)+ “]”);
那样有用吗?
如果不需要循环,则递归可以在这种情况下工作:
static void print(List l1, List l2) {
if(!l1.isEmpty()) {
System.out.println("first_name: " + l1.get(0) + "; family_name: " + l2.get(0));
print(l1.subList(1, l1.size()), l2.subList(1, l2.size()));
}
}
而不是使用:
System.out.println();
使用下面的代码在打印后不会跳过行:
System.out.print()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.