繁体   English   中英

连接Java arraylist中的字符串

[英]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 与原始问题一样, ListtoString()方法将字符串放在用逗号分隔的方括号中。 (我本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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM