Java (5)


Java(5):配列


1.配列

배열이란?•同じデータ型の連続データ構造(データ型-同じ)
•インデックス演算子[]を使用したクイック参照
•物理的位置と論理的位置が同じ
•並べ替え順は0から
•JavaではArrayListを使用してオブジェクト配列を実装することが多い배열 선언int[] arr1 = new int[10];
int arr2[] = new int[10];배열 초기화配列は宣言とともにデータ型に基づいて初期化されます(整数は0、実数は0.0、オブジェクトはnull)
必要に応じて初期値を指定できます
int[] numbers = new int[] {10, 20, 30};
//개수 생략해야 함
int[] numbers = {10, 20, 30}; 
// new int[]  생략 가능 , 선언과 동시에 초기화할때만 이렇게 가능
int[] ids; 
ids = new int[] {10, 20, 30};
// 선언후
배열의 길이와 요소의 개수는 동일하지 않음•アレイを宣言すると、どのくらいのメモリが割り当てられますが、実際の要素(データ)がない場合があります.
•配列のlengthプロパティは配列の個数を返します.したがって、要素の個数とは異なります.
•lengthを使用してエラーが発生した場合、要素数の変数を保持します(count)문자 배열強化されたfor文の使用
0からn-1の順に並べられたn個の要素は、非常に簡単に使用できます.
for( 변수 : 배열) {
}
public class CharArrayTest {
ㅤ
	public static void main(String[] args) {
ㅤ
		char[] alpahbets = new char[26];
		char ch = 'A';
		ㅤ
		for(int i = 0; i<alpahbets.length; i++) {
			ㅤ
			alpahbets[i] = ch++;
		}
		ㅤ
		for(char alpha : alpahbets) {
			System.out.println(alpha +","+ (int)alpha);
		}
	}
}
ㅤㅤ
ㅤㅤ
ㅤㅤ
ㅤㅤ
ㅤㅤ

2.オブジェクトの整列

객체 배열 선언과 구현•デフォルトのデータ型配列では、宣言と同時に配列サイズと同じメモリが割り当てられますが、オブジェクト配列では、要素としてのオブジェクトのアドレス(null)を含む1つのメモリ(4バイト8バイト)のみが割り当てられ、各要素オブジェクトが作成されて格納される必要があります.
最初は、アドレスを格納できる部屋は1つしかありません(オブジェクトを格納するのではなく)
ひとつずつ入れて
public class Book {
ㅤ
	private String title;
	private String author;
	ㅤ
	public Book() {}
	ㅤ
	public Book(String title, String author) {
		this.title = title;
		this.author = author;
	}
ㅤ
	public String getTitle() {
		return title;
	}
ㅤ
	public void setTitle(String title) {
		this.title = title;
	}
ㅤ
	public String getAuthor() {
		return author;
	}
ㅤ
	public void setAuthor(String author) {
		this.author = author;
	}
	ㅤ
	public void showBookInfo() {
		System.out.println(title + "," +author);
	}
}
オブジェクトを作成し、各配列の要素として保存します.
public class BookArrayTest {
ㅤ
	public static void main(String[] args) {
ㅤ
		Book[] library = new Book[5];
		ㅤ
		library[0] = new Book("태백산맥1", "조정래");
		library[1] = new Book("태백산맥2", "조정래");
		library[2] = new Book("태백산맥3", "조정래");
		library[3] = new Book("태백산맥4", "조정래");
		library[4] = new Book("태백산맥5", "조정래");
		ㅤ
		for(int i =0; i<library.length; i++) {
			System.out.println(library[i]);
			library[i].showBookInfo();
		}
	}
}
객체 배열 복사하기System.ArrayCopy(src、src pos、dest、destpos、length)javaが提供する配列レプリケーション方法
1)浅い放射
オブジェクトアドレスのみをコピーし、配列内の要素を変更するときに一緒に変更します.
2つの配列は同じオブジェクトを指します.
public class ObjectCopy {
ㅤ
	public static void main(String[] args) {
ㅤ
		Book[] library = new Book[5];
		Book[] copyLibaray = new Book[5];
		ㅤ
		library[0] = new Book("태백산맥1", "조정래");
		library[1] = new Book("태백산맥2", "조정래");
		library[2] = new Book("태백산맥3", "조정래");
		library[3] = new Book("태백산맥4", "조정래");
		library[4] = new Book("태백산맥5", "조정래");
		ㅤ
		System.arraycopy(library, 0, copyLibaray, 0, 5);
		ㅤ
		System.out.println("======copy library=========");
		for( Book book : copyLibaray ) {
			book.showBookInfo();
		}
		ㅤ
		library[0].setTitle("나목");
		library[0].setAuthor("박완서");
		ㅤ
		System.out.println("======library=========");
		for( Book book : library) {
			book.showBookInfo();
		}
		ㅤ
		System.out.println("======copy library=========");
		ㅤ
		for( Book book : copyLibaray) {
			book.showBookInfo();
		}
	}
}
2)深さ放射
各オブジェクトを作成してオブジェクトの値をコピーし、配列が異なるオブジェクトを指すようにします.
public class ObjectCopy2 {
ㅤ
	public static void main(String[] args) {
ㅤ
		Book[] library = new Book[5];
		Book[] copyLibaray = new Book[5];
		ㅤ
		library[0] = new Book("태백산맥1", "조정래");
		library[1] = new Book("태백산맥2", "조정래");
		library[2] = new Book("태백산맥3", "조정래");
		library[3] = new Book("태백산맥4", "조정래");
		library[4] = new Book("태백산맥5", "조정래");
		ㅤ
		copyLibaray[0] = new Book();
		copyLibaray[1] = new Book();
		copyLibaray[2] = new Book();
		copyLibaray[3] = new Book();
		copyLibaray[4] = new Book();
		ㅤ
		for(int i = 0; i< library.length; i++) {
			ㅤcopyLibaray[i].setTitle(library[i].getTitle());
		ㅤ	copyLibaray[i].setAuthor(library[i].getAuthor());
		}
		ㅤ
		ㅤ
		library[0].setTitle("나목");
		library[0].setAuthor("박완서");
	ㅤ
		System.out.println("======library=========");
		for( Book book : library) {
			book.showBookInfo();
		}
		ㅤ
		System.out.println("======copy library=========");
		for( Book book : copyLibaray) {
			book.showBookInfo();
		}
	}
}
다차원 배열•2 Dを超えるアレイの実装
•平面(2 Dアレイ)または空間(3 Dアレイ)を使用したインプリメンテーション
int[][] arr = {{1,2,3}, {4,5,6}}
ㅤ
public class TwoDimensionTest {
ㅤ
	public static void main(String[] args) {
		int[][] arr = { {1,2,3}, {4,5,6,7}};
		int i, j;
		ㅤ
		for(i =0; i<arr.length; i++) {
			for(j=0; j<arr[i].length; j++) {
				System.out.print(arr[i][j] + " ");
			}
			System.out.println(", \t" + arr[i].length);
			System.out.println();
		}
	}
}
ArrayListjava.utilパッケージから提供
•従来のアレイ宣言および使用方法では、アレイの長さが決定され、要素の数がアレイの長さより大きい場合は、アレイを再割り当ておよびコピーする必要があります.
•アレイ内の要素を追加または削除する場合は、他の要素の移動を実行する必要があります.
•ArrayListは、オブジェクト配列をより効率的に管理するJavaが提供するクラスです
•多くの方法で最適化されたアルゴリズムが採用されており、各方法の使用方法を熟知するだけでヘルプを得ることができます.
package ch23;
ㅤ
import java.util.ArrayList;
import ch21.Book;
ㅤㅤ
public class ArrayListTest {
ㅤㅤ
	public static void main(String[] args) {
ㅤ
		ArrayList<Book> library = new ArrayList<Book>(); // 어떤 객체 넣을지 지정
		ㅤ
		library.add(new Book("태백산맥1", "조정래"));
		library.add(new Book("태백산맥2", "조정래"));
		library.add(new Book("태백산맥3", "조정래"));
		library.add(new Book("태백산맥4", "조정래"));
		library.add(new Book("태백산맥5", "조정래"));
		ㅤ
		for(int i =0; i<library.size(); i++) {
			library.get(i).showBookInfo();
		}
	}
}
F 1を押してArrayListを表示
メソッドの表示、メソッド名とパラメータの表示、および戻り値の表示
最後のアレンジで試してみる본 게시글은 fastcampus 박은종강사 수업을 듣고 개인적으로 정리한 내용임을 밝힘.