使用for循环添加一个字符串数组和另一个字符串[重复]

Posted

技术标签:

【中文标题】使用for循环添加一个字符串数组和另一个字符串[重复]【英文标题】:Add an array of string with another using for loop [duplicate] 【发布时间】:2013-08-07 02:52:04 【问题描述】:

您好,我使用for 循环来添加数组中的字符串。任何人都可以帮我解决以下显示错误的代码。

image = new String[] "APP","FIELD","KYC";

image2 = new String[] "MEMORANDUM","ASSOCIATION";

现在使用 for 循环或任何我需要相同的 image 数组的方法

image = new String[] "APP","FIELD","KYC","MEMORANDUM","ASSOCIATION";

【问题讨论】:

错误是什么?向我们展示你的 for 循环 您发布的代码不应显示任何错误。有很多方法可以实现您想要实现的目标,无论是否使用循环。 【参考方案1】:
public static void main(String[] args) 
    String[] image = new String[]  "APP", "FIELD", "KYC" ;
    String[] image2 = new String[]  "MEMORANDUM", "ASSOCIATION" ;     

    String[] image3 = new String[image.length+image2.length];       

    for (int i = 0; i <image.length; i++) 
        image3[i] = image[i];

    

    for (int i = image.length; i>=0 && i < image3.length; i++) 
        image3[i] = image2[i-3];
    


    //Check if image3 contains the elements you need.
    for(String imageData:image3)
    
        System.out.println(imageData);
    


这不是一个通用的解决方案。它只是解决你所需要的。你能详细说明你想做什么吗?

【讨论】:

【参考方案2】:

是的,这可以在没有循环的情况下实现。使用ArrayUtils.addAll(T[], T...)

String[] both = ArrayUtils.addAll(image, image2);

这是一个数组到/从List 转换的解决方案。

String[] image = new String[] "APP","FIELD","KYC";
String[] image2 = new String[] "MEMORANDUM","ASSOCIATION";
List<String> list = new ArrayList<String>(Arrays.asList(image));
list.addAll(Arrays.asList(image2));
String[] result = list.toArray(new String[]);
System.out.println(Arrays.toString(result));

输出将与您所要求的相同。


正如 Mena 建议的那样,另一种解决方案可以是 System.arraycopy

String[] image = new String[] "APP","FIELD","KYC";
String[] image2 = new String[] "MEMORANDUM","ASSOCIATION";
String[] result = new String[image.length + image2.length]; 

// copies an array from the specified source array
System.arraycopy(image, 0, result, 0, image.length);
System.arraycopy(image2, 0, result, image.length, image2.length);

// Now you can use result for final array

阅读更多关于How can I concatenate two arrays in Java?

【讨论】:

您应该指定这需要 Apache Commons。 @Mena 我添加了链接。 啊,是的,现在才看到编辑。很公平。尽管我会更明确地说明您的解决方案需要项目中的依赖项(并且有其他解决方案不需要)。 @Mena 解决方案添加并更新了重复链接。 更好 ;) 你得到了我的 +1。也可以为此使用arrayCopy。【参考方案3】:

Java 默认没有这样的工具。你可以做的是使用System.arraycopy

public static void copy(Object[] a, Object... b) 

  int alen = a.length;
  int blen = b.length;

  Object[] c = new Object[alen + blen);

  System.arraycopy(a, 0, c, 0, alen);
  System.arraycopy(b, 0, c, alen, blen);

  return c;

您可能希望使用泛型

public static <T> void copy(T[] a, T... b) 

  int alen = a.length;
  int blen = b.length;

  T[] c = (T[]) Array.newInstance(a.getClass(),alen + blen);

  System.arraycopy(a, 0, c, 0, alen);
  System.arraycopy(b, 0, c, alen, blen);

  return c;

但是,如果您真的依赖于数组,那么所有这些都是必需的,但是它会在程序流程期间更改大小。重新考虑使用List&lt;String&gt;,它将允许您存储字符串并对其进行扩展。

【讨论】:

【参考方案4】:

使用以下代码

    ArrayList<String> image = new ArrayList<String>();
    image.add("APP");
    image.add("FIELD");
    image.add("KYC");

    ArrayList<String> image2 = new ArrayList<String>();
    image2.add("MEMORANDUM");
    image2.add("ASSOCIATION");

    image.addAll(image2);

    for(String i:image)
        System.out.println(i);
    

【讨论】:

以上是关于使用for循环添加一个字符串数组和另一个字符串[重复]的主要内容,如果未能解决你的问题,请参考以下文章

在 coredata 中添加实体和另一个实体的属性之间的关系

javascript 基本使用—字符串变量数组函数for循环

为嵌套数组中的项目添加字符循环 - Vue.js

带字符串的 For 循环不起作用

for循环中的多个do命令:将字符串回显到文件然后重定向到命令窗口

在定义字符数组的 for 循环内应用输入限制(井字游戏)