필드 변수로 정의 된 arraylist가 있습니다.정의 된 2 차원 배열로 푸시
String[][] data = {{"Neil-PC","127.0.0.1","Xeon 1230v3 + 2gb DDR2"}};
나는 그때 문자열 배열로 변환, 목록을 사용하여 시도했다
{"Bob-PC","127.0.0.1","Xeon 1230v3 + 2gb DDR2"}
추가 할 수 있지만 '2D'옵션이 없기 때문에 그 실패했습니다.
필드 변수로 정의 된 arraylist가 있습니다.정의 된 2 차원 배열로 푸시
String[][] data = {{"Neil-PC","127.0.0.1","Xeon 1230v3 + 2gb DDR2"}};
나는 그때 문자열 배열로 변환, 목록을 사용하여 시도했다
{"Bob-PC","127.0.0.1","Xeon 1230v3 + 2gb DDR2"}
추가 할 수 있지만 '2D'옵션이 없기 때문에 그 실패했습니다.
당신이 당신의 배열을 정의 할 때 :
String[][] data = {{"Neil-PC","127.0.0.1","Xeon 1230v3 + 2gb DDR2"}};
당신은 문자열의 2 차원 배열을 생성합니다. 그러나 배열은 정적으로 크기가 지정되며 두 번째 차원에는 아무 것도 없으므로 사용할 수있는 메모리가 없습니다. 당신은 단지이 두 가지 특정 기록을 원하는 경우에, 당신이 뭔가를 할 수 있습니다 :
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을 읽을 수 있습니다.
JTable은 ArrayList를 취하지 않고 2D 문자열 만 취할 수 없습니다. – user3519539
이 데이터에서 TableModel을 만들어야하는 경우 처음에는 그 사실을 알면 좋았을 것입니다. IIRC를 사용하면 ArrayLists 대신 Vector를 사용하여 테이블을 모델링 할 수 있습니다. 원칙은 동일합니다. – MikeTheLiar
2 차원 배열을 사용하기를 원하지만 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);
, 당신이 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;
}
물론 이것은 개별 어레이의 길이를 고려하지는 않지만 문제가되는 것이 아닌지를 나타내는 것은 아닙니다.
다음은 간단한 데모입니다. 다음과 같은 주요있어서,
[닐-PC, 127.0.0.1, 제온 1230v3 + 2기가바이트 DDR2]
[밥-PC, 127.0.0.1 :
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)); } }
는 출력을 생성 제온 1230v3 + 2gb DDR2]
eeeeeeeeeee 저는 전문가는 아니지만 2D 배열입니다. 내가 잘못? – ruhungry
자세히 설명 할 수 있습니까? 배열 [] []을 사용하는 동안 arraylist를 요구하고 있습니까? –
'data'는 여러분이 선언 한대로 다른 것을 담을만큼 크지 않습니다. 당신은 아마'String [3]'의'ArrayList'를 원할 것입니다. – MikeTheLiar