자바의 ArrayList
는 Collection Framework
의 한 종류이다.
C++
처럼 operator[]
를 지원하면 좋으련만....
E get(int index)
라는 메소드로 첨자접근을 지원한다.
대부분의 기능은 레퍼런스 사이트에 잘 나와 있다.
http://docs.oracle.com/javase/6/docs/api/index.html?index-filesindex-1.html
###1. ArrayList의 fill(C++의 std::fill)
import java.util.ArrayList;
import java.util.Collections;
/*...중략...*/
ArrayList<Integer> v;
v=new ArrayList<>(Collections.nCopies(10,4));
//10개의 배열을 생성후, 4로 초기화 함
nCopies
의 2번째 인자에 new CLASS()
를 넣게되면 모든 배열이 한 객체를 가르키게된다. 이는 assign
같은 메소드가 아니다.
그래서 아래와 같이 할 수 도 있다.
class AAA{
/*...*/
}
ArrayList<AAA> v=new ArrayList<>(Collections.nCopies(10,null));
for(int i=0;i<v.size();i++){
v.set(i,new AAA());
}
###2. Array의 fill(C++의 std::fill)
Integer[] v;
v=new Integer[10];
Arrays.fill(V,7); //V배열 모두를 7로 채움
이진 탐색과 정렬도 Arrays
안에 속해 있다.
==우선 배열자체를 할당한다, 각 원소를 한번에 할당하는 방법은 없다고 한다.
==
###3. ArrayList의 정렬
1. 객체 안에 비교함수를 만들 경우
import java.util.ArrayList;
import java.util.Comparator;
import java.util.Collections;
import java.util.Random;
class AAA{
public Integer first;
public Integer second;
public int compareTo(AAA a){
return this.first < a.first ? -1 : this.first > a.first ? 1 : 0;
}
}
public class Main{
public static void main(String[] args){
ArrayList<AAA> a = new ArrayList<>(Collections.nCopies(10, null));
Random rand = new Random();
for(int i = 0; i < 10; i++){
a.set(i, new AAA());
a.get(i).first = rand.nextInt(100);
a.get(i).second = i * i;
}
Collections.sort(a, AAA::compareTo); // 정렬 방법1
// a.sort(AAA::compareTo); // 정렬 방법2
for(AAA i : a){
System.out.println(i.first + '\t' + i.second);
}
}
}
Collections.sort(인스턴스 이름, 객체 이름::비교함수);```
또는
인스턴스 이름.sort(객체 이름::비교함수);```
를 사용하면 된다.
2. 객체 밖에 비교함수를 만들 경우
import java.util.ArrayList;
import java.util.Comparator;
import java.util.Collections;
import java.util.Random;
class AAA{
public Integer first;
public Integer second;
}
class ComparatorAAA implements Comparator<AAA>{
@Override
public int compare(AAA a, AAA b){
return a.first < b.first ? -1 : a.first > b.first ? 1 : 0;
}
}
public class Main{
public static void main(String[] args){
ArrayList<AAA> a = new ArrayList<>(Collections.nCopies(10, null));
/*...*/
Collections.sort(a, new ComparatorAAA()); // 정렬 방법1
// a.sort(new ComparatorAAA()); // 정렬 방법2
/*...*/
}
}
Collections.sort(인스턴스 이름, new 비교클래스());```
또는
인스턴스 이름.sort(new 비교클래스());```
를 사용하면 된다.
###4. Array의 정렬
1. 객체 안에 비교함수를 만들 경우
import java.util.Comparator;
import java.util.Collections;
import java.util.Random;
import java.util.Arrays;
class AAA{
public Integer first;
public Integer second;
public int compareTo(AAA a){
return this.first < a.first ? -1 : this.first > a.first ? 1 : 0;
}
}
public class Main{
public static void main(String[] args){
AAA[] a = new AAA[10];
/*...*/
Arrays.sort(a, AAA::compareTo); // 정렬
/*...*/
}
}
Arrays.sort(인스턴스 이름, 객체이름::비교함수);```
를 사용하면 된다.
2. 객체 밖에 비교함수를 만들 경우
import java.util.Comparator;
import java.util.Collections;
import java.util.Random;
import java.util.Arrays;
class AAA{
/*...*/
}
class ComparatorAAA implements Comparator<AAA>{
@Override
public int compare(AAA a, AAA b){
return a.first < b.first ? -1 : a.first > b.first ? 1 : 0;
}
}
public class Main{
public static void main(String[] args){
AAA[] a = new AAA[10];
/*...*/
Arrays.sort(a, new ComparatorAAA()); // 정렬
/*...*/
}
}
Arrays.sort(인스턴스 이름, new 비교클래스());```
를 사용하면 된다.