PHP에서는 다음과 같이 배열에 요소를 동적으로 추가 할 수 있습니다.
$x = new Array();
$x[] = 1;
$x[] = 2;
그 후에는 다음 $x
과 같은 배열이 {1,2}
됩니다..
Java에서 비슷한 작업을 수행 할 수있는 방법이 있습니까?
답변
java.util.LinkedList 또는 java.util.ArrayList를 살펴보십시오.
List<Integer> x = new ArrayList<Integer>();
x.add(1);
x.add(2);
답변
Java의 배열은 크기가 고정되어 있으므로 PHP에서 할 수있는 것처럼 “끝에 무언가를 추가”할 수 없습니다.
PHP 동작과 약간 비슷합니다.
int[] addElement(int[] org, int added) {
int[] result = Arrays.copyOf(org, org.length +1);
result[org.length] = added;
return result;
}
그런 다음 다음과 같이 작성할 수 있습니다.
x = new int[0];
x = addElement(x, 1);
x = addElement(x, 2);
System.out.println(Arrays.toString(x));
그러나이 체계는 매번 전체 배열의 복사본을 만들기 때문에 더 큰 배열의 경우 매우 비효율적입니다 . (실제로 기존 배열이 동일하게 유지되기 때문에 PHP와 완전히 동일하지는 않습니다.)
PHP 배열은 실제로 “최대 키”가 추가 된 Java HashMap과 매우 동일하므로 다음에 사용할 키와 이상한 반복 순서 (및 정수 키와 일부 문자열 간의 이상한 등가 관계)를 알 수 있습니다. 그러나 간단한 인덱스 컬렉션의 경우 다른 응답자가 제안한 것처럼 Java의 List를 사용하는 것이 좋습니다.
List
Integer의 모든 int를 래핑하는 오버 헤드로 인해 사용을 피하려면 내부 배열을 사용하지만 내부 배열이 가득 찬 경우에만 모든 변경 사항에 대해 복사하지 않는 기본 유형에 대한 컬렉션의 재 구현 사용을 고려하십시오. ArrayList처럼). (빠르게 봤던 한 가지 예는 이 IntList 클래스 입니다.)
구아바 포함 같은 래퍼 만드는 방법 에서 Ints.asList
, Longs.asList
등
답변
Apache Commons에는 새 배열의 끝에 요소를 추가 하는 ArrayUtils 구현이 있습니다.
/** Copies the given array and adds the given element at the end of the new array. */
public static <T> T[] add(T[] array, T element)
답변
저는이 질문을 웹에서 자주 보았고 제 생각에는 평판이 좋은 많은 사람들이이 질문에 적절하게 대답하지 않았습니다. 그래서 여기에 제 답을 표현하고 싶습니다.
먼저 와 사이 에 차이 가 있음을 고려해야 합니다.array
arraylist
질문 요소를 추가하기위한 요청 어레이에 및 하지의 ArrayList
대답은 아주 간단합니다. 3 단계로 진행할 수 있습니다.
- 배열을 배열 목록으로 변환
- arrayList에 요소 추가
- 새 arrayList를 배열로 다시 변환
마지막으로 코드는 다음과 같습니다.
1 단계:
public List<String> convertArrayToList(String[] array){
List<String> stringList = new ArrayList<String>(Arrays.asList(array));
return stringList;
}
2 단계:
public List<String> addToList(String element,List<String> list){
list.add(element);
return list;
}
3 단계 :
public String[] convertListToArray(List<String> list){
String[] ins = (String[])list.toArray(new String[list.size()]);
return ins;
}
4 단계
public String[] addNewItemToArray(String element,String [] array){
List<String> list = convertArrayToList(array);
list= addToList(element,list);
return convertListToArray(list);
}
답변
ArrayList
를 사용한 다음 toArray()
방법 을 사용할 수 있습니다 . 그러나 수행중인 작업에 따라 어레이가 전혀 필요하지 않을 수도 있습니다. 경우보고에 봐 Lists
더 당신이 원하는 무엇인가.
참조 : Java List Tutorial
답변
구조와 같은 동적 크기의 배열을 위해 ArrayList를 사용하고 싶을 것입니다.
답변
JAVA의 컬렉션 프레임 워크를 사용하여 배열에 요소를 동적으로 추가 할 수 있습니다. 컬렉션 프레임 워크는 기본 데이터 유형에서 작동하지 않습니다.
이 컬렉션 프레임 워크는 “java.util. *”패키지에서 사용할 수 있습니다.
예를 들어 ArrayList를 사용하는 경우
객체를 생성 한 다음 요소 수를 추가합니다 (String, Integer 등 모든 유형).
ArrayList a = new ArrayList();
a.add("suman");
a.add(new Integer(3));
a.add("gurram");
이제 배열에 3 개의 요소가 추가되었습니다.
추가 된 요소를 제거하려면
a.remove("suman");
요소를 추가하려면 다시
a.add("Gurram");
따라서 배열 크기는 동적으로 증가 / 감소합니다.