我有一个已定义的arraylist作为字段变量。
String[][] data = {{"Neil-PC","127.0.0.1","Xeon 1230v3 + 2gb DDR2"}};
我想添加
{"Bob-PC","127.0.0.1","Xeon 1230v3 + 2gb DDR2"}
我尝试过使用列表,然后将其转换为字符串数组,但由于没有' 2d'选项。
答案 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]