Arraylist에서 Array로
ArrayList에서 Array로 변환하는 것이 안전하고 / 권한 지 알고 싶습니다. 각 줄에 문자열이있는 텍스트 파일이 있습니다.
1236
1233
4566
4568
....
배열 목록으로 읽어 들인 다음 배열로 변환하고 싶습니다. 그렇게하는 것이 합법적입니까?
감사
예 , ArrayList
를Array
. 좋은 아이디어인지 여부는 의도 한 용도에 따라 다릅니다. ArrayList
제공 하는 작업이 필요 합니까? 그렇다면 ArrayList
. 그렇지 않으면 멀리 개종하십시오!
ArrayList<Integer> foo = new ArrayList<Integer>();
foo.add(1);
foo.add(1);
foo.add(2);
foo.add(3);
foo.add(5);
Integer[] bar = foo.toArray(new Integer[foo.size()]);
System.out.println("bar.length = " + bar.length);
출력
bar.length = 5
이것이 최선의 방법 (IMHO)입니다.
List<String> myArrayList = new ArrayList<String>();
//.....
String[] myArray = myArrayList.toArray(new String[myArrayList.size()]);
이 코드는 다음과 같이 작동합니다.
String[] myArray = myArrayList.toArray(new String[0]);
그러나 덜 효과적입니다. 문자열 배열이 두 번 생성됩니다. 처음에 길이가 0 인 배열이 생성 된 다음 실제 크기 배열이 생성되고 채워지고 반환됩니다. 따라서 필요한 크기 (부터 list.size()
) 를 알고 있기 때문에 모든 요소를 넣을 수있을만큼 큰 배열을 만들어야합니다. 이 경우 재 할당되지 않습니다.
ArrayList<String> myArrayList = new ArrayList<String>();
...
String[] myArray = myArrayList.toArray(new String[0]);
"좋은 아이디어"인지 여부는 실제로 사용 사례에 따라 달라집니다.
v가 ArrayList라고 가정합니다.
String[] x = (String[]) v.toArray(new String[0]);
컬렉션을 배열로 변환하는 두 가지 스타일이 있습니다. 미리 크기가 c.toArray(new String[c.size()])
지정된 배열 (예 :) 또는 빈 배열 (예 :)을 사용합니다 c.toArray(new String[0])
. 사전 크기 배열을 사용하는 이전 Java 버전에서는 적절한 크기의 배열을 생성하는 데 필요한 리플렉션 호출이 매우 느리기 때문에 사전 크기 배열을 사용하는 것이 좋습니다. 그러나 OpenJDK 6의 최신 업데이트 이후이 호출이 내재되어 빈 어레이 버전의 성능이 미리 크기 조정 된 버전과 비교하여 동일하고 때로는 더 나아졌습니다. 또한 사전 크기 배열을 전달하는 것은 크기와 toArray 호출 사이에 데이터 경쟁이 가능하기 때문에 동시 또는 동기화 된 수집에 위험합니다.이 경우 수집이 작업 중에 동시에 축소 된 경우 배열 끝에 추가 null이 발생할 수 있습니다. 유니폼 스타일을 따를 수 있습니다.빈 배열 (최신 Java에서 권장 됨)을 사용하거나 사전 크기 배열 (이전 Java 버전 또는 HotSpot 기반이 아닌 JVM에서 더 빠를 수 있음)을 사용 합니다.
ArrayList<String> a = new ArrayList<String>();
a.add( "test" );
@SuppressWarnings( "unused")
Object[] array = a.toArray();
나중에 배열을 조작해야하는 경우 달성하려는 목표에 따라 ArrayList에 문자열을 유지하는 것보다 더 많은 노력이 소요됩니다. 또한 ArrayList에 대한 임의 액세스 권한이 있습니다.list.get( index );
Collection 인터페이스에는 새 컬렉션을 배열로 변환하는 toArray () 메서드가 포함되어 있습니다. 이 방법에는 두 가지 형태가 있습니다. 인수가없는 버전은 컬렉션의 요소를 Object 배열로 반환합니다. public Object [] toArray (). 반환 된 배열은 다른 데이터 유형으로 캐스트 할 수 없습니다. 이것은 가장 간단한 버전입니다. 두 번째 버전에서는 반환하려는 배열의 데이터 유형을 전달해야합니다. public Object [] toArray (Object type []).
public static void main(String[] args) {
List<String> l=new ArrayList<String>();
l.add("A");
l.add("B");
l.add("C");
Object arr[]=l.toArray();
for(Object a:arr)
{
String str=(String)a;
System.out.println(str);
}
}
for reference, refer this link http://techno-terminal.blogspot.in/2015/11/how-to-obtain-array-from-arraylist.html
One approach would be to add the Second for Loop where the printing is being done inside the first for loop. Like this:
static String[] SENTENCE;
public static void main(String []args) throws Exception{
Scanner sentence = new Scanner(new File("assets/blah.txt"));
ArrayList<String> sentenceList = new ArrayList<String>();
while (sentence.hasNextLine())
{
sentenceList.add(sentence.nextLine());
}
sentence.close();
String[] sentenceArray = sentenceList.toArray(new String[sentenceList.size()]);
// System.out.println(sentenceArray.length);
for (int r=0;r<sentenceArray.length;r++)
{
SENTENCE = sentenceArray[r].split("(?<=[.!?])\\s*"); //split sentences and store in array
for (int i=0;i<SENTENCE.length;i++)
{
System.out.println("Sentence " + (i+1) + ": " + SENTENCE[i]);
}
}
}
참고URL : https://stackoverflow.com/questions/7969023/from-arraylist-to-array
'Programming' 카테고리의 다른 글
제목 표시 줄에 전체 디렉토리 경로를 표시하도록 OS X에서 Sublime Text 구성 (0) | 2020.08.09 |
---|---|
이러한 JavaScript 코드 조각이 둘 다 오류가 발생하더라도 다르게 작동하는 이유는 무엇입니까? (0) | 2020.08.09 |
CardView 배경색은 항상 흰색입니다. (0) | 2020.08.08 |
새 툴바의 제목 색상은 어떻게 설정합니까? (0) | 2020.08.08 |
구에 n 개의 점을 균등하게 분배 (0) | 2020.08.08 |