推送到定义的2d数组

时间:2014-04-10 12:54:32

标签: java arrays string

我有一个已定义的arraylist作为字段变量。

String[][] data = {{"Neil-PC","127.0.0.1","Xeon 1230v3 + 2gb DDR2"}};

我想添加

{"Bob-PC","127.0.0.1","Xeon 1230v3 + 2gb DDR2"}

我尝试过使用列表,然后将其转换为字符串数组,但由于没有' 2d'选项。

3 个答案:

答案 0 :(得分:3)

定义数组时:

String[][] data = {{"Neil-PC","127.0.0.1","Xeon 1230v3 + 2gb DDR2"}};

您正在创建一个字符串的2D数组。但是,数组是静态大小的,并且由于第二维中没有任何内容,因此没有可用的内存。如果你只想要这两个特定记录,你可以这样做:

String[][] arr = new String[2][3];

String[] input1 = {"Neil-PC","127.0.0.1","Xeon 1230v3 + 2gb DDR2"};
String[] input2 = {"Bob-PC","127.0.0.1","Xeon 1230v3 + 2gb DDR2"};

arr[0] = input1;
arr[1] = input2;

但是,由于您似乎想要添加任意数量的记录,您可能希望使用以下内容:

import java.util.*;

public class HelloWorld
{    
     public static void main(String []args)
     {           
        ArrayList<String[]> list = new ArrayList<String[]>();

        String[] input1 = {"Neil-PC","127.0.0.1","Xeon 1230v3 + 2gb DDR2"};
        String[] input2 = {"Bob-PC","127.0.0.1","Xeon 1230v3 + 2gb DDR2"};

        list.add(input1);
        list.add(input2);                    
     }
}

ArrayLists允许您在运行时继续添加元素。您可以阅读有关列表和数组列表here的Oracle教程。

答案 1 :(得分:1)

我不知道因为你想要使用2d数组,但Java是面向对象语言所以为什么不使用对象?

所以我认为是这样的:

public class MyClass{
     private String namePc;

     private String ipAddress;

     pricate String hardwareDescription;

     //getter and setter method
}

你可以使用:

List<MyClass> computers = new ArrayList<MyClass>();

MyClass pc = new MyClass();
pc.setNamePc("Name");
pc.setIpAddress("192.168.168.2");

然后computers.add(pc);

答案 2 :(得分:0)

当然,您可以使用List<String[]>,甚至是List<List<String>>,但如果您想坚持使用2D字符串数组,则可以执行以下操作:

public static String[][] addNewArray( final String[][] baseArray, final String[] toAdd ) {
    //Define a new 2D array with size 1 bigger to accommodate the extra array.
    final String[][] newArray = new String[ (baseArray.length + 1) ][];

    //Copy across the data from the basearray
    for( int i = 0; i < baseArray.length; i++ ) {
        newArray[i] = baseArray[i];
    }
    //Add on the extra array
    newArray[baseArray.length] = toAdd;

    return newArray;
}

当然,这并不能满足每个阵列的长度,但没有迹象表明这是您的问题所关注的问题。

这是一个快速演示。以下主要方法:

public static void main(final String[] args) {
    final String[][] data = {{"Neil-PC","127.0.0.1","Xeon 1230v3 + 2gb DDR2"}};
    final String[] extraData = {"Bob-PC","127.0.0.1","Xeon 1230v3 + 2gb DDR2"};

    final String[][] newArray = addNewArray(data, extraData);
    for (final String[] strings : newArray) {
        System.out.println( Arrays.toString(strings) );
    }
}

产生输出:

  

[Neil-PC,127.0.0.1,Xeon 1230v3 + 2gb DDR2]

     

[Bob-PC,127.0.0.1,Xeon 1230v3 + 2gb DDR2]