โข
ArrayList ๋ด์ ์ ์ธ๋ ๋ฐฐ์ด์ ๋ฐ์ดํฐ๊ฐ ์ ์ฅ๋๋ค.
โข
size๊ฐ์ ์ ์ฅํ๊ณ ์๋ค.
//code.oa.gg/java8/993
// ๋ฌธ์ : ๋ฐฐ์ด์ ๋จ์ ์ ๋ณด์ํ ArrayList ๋ผ๋ ํด๋์ค๋ฅผ ๋ง๋ค์ด์ฃผ์ธ์. ์๋์ ๊ฐ์ด ์ถ๋ ฅ๋๋๋ก ํด์ฃผ์ธ์. add ํจ์์์ ๋ฐฐ์ด์ ํฌ๊ธฐ๊ฐ ์๋์ผ๋ก ๋์ด๋๋๋ก ํด์ฃผ์ธ์.
import java.util.Arrays;
class Main {
public static void main(String[] args) {
ArrayList ar = new ArrayList();
ar.add(100);
ar.add(200);
ar.add(300);
ar.add(400);
int value = ar.get(0);
System.out.println(value);
// ์ถ๋ ฅ : 100
value = ar.get(1);
System.out.println(value);
// ์ถ๋ ฅ : 200
value = ar.get(2);
System.out.println(value);
// ์ถ๋ ฅ : 300
value = ar.get(3);
System.out.println(value);
// ์ถ๋ ฅ : 400
}
}
class ArrayList {
int[] datas;
int lastIndex = -1;
ArrayList() {
datas = new int[3]; // ์ด ๋ถ๋ถ์ ์์ ํ ์ ์์ต๋๋ค.
}
void add(int data) {
lastIndex++;
if (lastIndex >= datas.length) {
int[] temps = Arrays.copyOf(datas,lastIndex * 2);
datas = temps;
}
datas[lastIndex] = data;
}
int get(int index) {
return datas[index];
}
}
Java
๋ณต์ฌ
//code.oa.gg/java8/997
// ๋ฌธ์ : ์๋ ์ฝ๋๊ฐ ์๋ํ๋๋ก ํด์ฃผ์ธ์.
class Main {
public static void main(String[] args) {
ArrayList ar = new ArrayList();
ar.add(100);
ar.add(200);
ar.add(300);
ar.add(400);
ar.remove(2);
int value = ar.get(2);
System.out.println(value);
// ์ถ๋ ฅ : 400
ar.remove(0);
value = ar.get(0);
System.out.println(value);
// ์ถ๋ ฅ : 200
ar.add(78);
value = ar.get(2);
System.out.println(value);
// ์ถ๋ ฅ : 78
}
}
class ArrayList {
int[] datas;
int lastIndex = -1;
ArrayList() {
datas = new int[3]; // ์ด ๋ถ๋ถ์ ์์ ํ ์ ์์ต๋๋ค.
}
void add(int data) {
if ( lastIndex + 1 >= datas.length ) {
// ํ์ฅ๊ณต์ฌ
// ๊ธฐ์กด๋ฒ์ค ๋ฒ๋ฆฌ๊ณ ์ ๋ฒ์ค๋ก ์ฐ๊ฒฐ!!
// datas ์ด ๋
์์ด ๊ธฐ์กด ๋ฒ์ค๋ฅผ ๋ฒ๋ฆฌ๊ณ ์ ๋ฒ์ค๋ฅผ ๊ฐ๋ฆฌ์ผ์ผ ํฉ๋๋ค.
// ์ ๋ฒ์ค ์์ฑ
int[] newArr = new int[datas.length * 2];
// ๊ธฐ์กด ๋ฒ์ค(๋ฐฐ์ด)๋ฅผ ๋ฒ๋ฆฌ๊ธฐ ์ ์ ๋ฒ์ค์ ์๋ ์น๊ฐ๋ค์ ์ ๋ฒ์ค๋ก ์ฎ๊ธด๋ค.
for ( int i = 0; i < datas.length; i++ ) {
newArr[i] = datas[i];
}
datas = newArr;
}
lastIndex++;
datas[lastIndex] = data;
}
int get(int index) {
return datas[index];
}
int size() {
return lastIndex + 1;
}
void remove(int index) {
for (int i=index; i < lastIndex; i++) {
datas[i] = datas[i + 1];
}
lastIndex--;
}
}
Java
๋ณต์ฌ
// code.oa.gg/java8/1340
// ๋ฌธ์ : ์๋ ์ฝ๋๊ฐ ์๋ํ๋๋ก ํด์ฃผ์ธ์.
class Main {
public static void main(String[] args) {
ArrayList ar = new ArrayList();
ar.add(100, 0);
ar.add(200, 1);
ar.add(300, 2);
ar.add(400, 3);
ar.add(500, 4);
ar.add(600, 2); // 2๋ฒ์ข์์ผ๋ก ์์น๊ธฐ, ๊ธฐ์กด์ 2๋ฒ์ข์ ์๋๋ถํฐ ๋ ์๋๊น์ง ๋ค๋ก ํ์นธ์ฉ ๋ฐ๋ฆฐ๋ค.
ar.add(700, 0); // 0๋ฒ์ข์์ผ๋ก ์์น๊ธฐ, ๊ธฐ์กด์ 0๋ฒ์ข์ ์๋๋ถํฐ ๋ ์๋๊น์ง ๋ค๋ก ํ์นธ์ฉ ๋ฐ๋ฆฐ๋ค.
for ( int i = 0; i < ar.size(); i++ ) {
int value = ar.get(i);
System.out.println(i + " : " + value);
}
// ์ถ๋ ฅ
// 0 : 700
// 1 : 100
// 2 : 200
// 3 : 600
// 4 : 300
// 5 : 400
// 6 : 500
}
}
class ArrayList {
int[] datas;
int lastIndex = -1;
ArrayList() {
datas = new int[3]; // ์ด ๋ถ๋ถ์ ์์ ํ ์ ์์ต๋๋ค.
}
void add(int data) {
extendDatasSizeIfNeed();
lastIndex++;
datas[lastIndex] = data;
}
void add(int data, int index) {
extendDatasSizeIfNeed();
lastIndex++;
for (int i = lastIndex; i > index; i--) {
datas[i] = datas[i - 1];
}
datas[index] = data;
}
void extendDatasSizeIfNeed() {
if ( lastIndex + 1 >= datas.length ) {
// ํ์ฅ๊ณต์ฌ
// ๊ธฐ์กด๋ฒ์ค ๋ฒ๋ฆฌ๊ณ ์ ๋ฒ์ค๋ก ์ฐ๊ฒฐ!!
// datas ์ด ๋
์์ด ๊ธฐ์กด ๋ฒ์ค๋ฅผ ๋ฒ๋ฆฌ๊ณ ์ ๋ฒ์ค๋ฅผ ๊ฐ๋ฆฌ์ผ์ผ ํฉ๋๋ค.
// ์ ๋ฒ์ค ์์ฑ
int[] newArr = new int[datas.length * 2];
// ๊ธฐ์กด ๋ฒ์ค(๋ฐฐ์ด)๋ฅผ ๋ฒ๋ฆฌ๊ธฐ ์ ์ ๋ฒ์ค์ ์๋ ์น๊ฐ๋ค์ ์ ๋ฒ์ค๋ก ์ฎ๊ธด๋ค.
for ( int i = 0; i < datas.length; i++ ) {
newArr[i] = datas[i];
}
datas = newArr;
}
}
int get(int index) {
return datas[index];
}
int size() {
return lastIndex + 1;
}
}
Java
๋ณต์ฌ
// ๋ฌธ์ : ์๋๊ฐ ์คํ๋๋๋ก ํด์ฃผ์ธ์.
// ์กฐ๊ฑด : ArrayList ๊ฐ์ฒด์์ ๋ด๋ถ์ ์ผ๋ก Object ๋ฐฐ์ด์ ์ฌ์ฉํด์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํด์ผ ํฉ๋๋ค.
// ์กฐ๊ฑด : Object ๋ฐฐ์ด์ ์ด๊ธฐ ๊ธธ์ด๋ 2 ์
๋๋ค.
// ์กฐ๊ฑด : ์ํฉ์ ๋ฐ๋ผ ๋ฐฐ์ด์ ๊ธธ์ด๋ ์๋์ผ๋ก ์ฆ๊ฐํด์ผ ํฉ๋๋ค.
// ์กฐ๊ฑด : ์๋ฆฌ๋จผํธ(๊ตฌ์ฑ์์)๋ฅผ ํ๋ ์ญ์ ํ๋ฉด ํด๋น ์์ ๋ค์ ์์๋ค์ด ์ ๋ถ ์์ผ๋ก ํ์นธ์ฉ ์์ง์ฌ์ผ ํฉ๋๋ค.
// ์กฐ๊ฑด : ArrayList์ ์ธ์คํด์ค ๋ณ์๋ 2๊ฐ๋ง ์ฌ์ฉํ ์ ์์ต๋๋ค.
// ์กฐ๊ฑด : ์ธ๋ถ์์ ํธ์ถํ์ง ์๋ ์์ฑ์ private ํค์๋๋ฅผ ๋ถ์ฌ์ฃผ์ธ์.
// ์กฐ๊ฑด : ์ค๋ณต์ ์ต๋ํ ์ ๊ฑฐํด์ฃผ์ธ์.
// ์กฐ๊ฑด : ์ฌ์ฉํ๋ ๋ณ์์ if๋ฌธ, for๋ฌธ์ ๊ฐ์๋ฅผ ๊ฐ๋
์ฑ์ ๋จ์ด๋จ๋ฆฌ์ง ์๋ ์ ์์ ์ต๋ํ ์ค์ฌ์ฃผ์ธ์.
import java.util.Arrays;
class Main {
public static void main(String[] args) {
ArrayList al = new ArrayList();
System.out.println("al.size() : " + al.size());
// ์ถ๋ ฅ => al.size() : 0
al.add(100);
System.out.println("al.get(0) : " + al.get(0));
// ์ถ๋ ฅ => al.get(0) : 100
al.add(200);
al.add(300);
// ์ถ๋ ฅ => ๋ฐฐ์ด์ ํฌ๊ธฐ๊ฐ ์ฆ๊ฐ๋์์ต๋๋ค. 2 => 4
System.out.println("al.size() : " + al.size());
// ์ถ๋ ฅ => al.size() : 3
System.out.println("al.get(1) : " + al.get(1));
// ์ถ๋ ฅ => al.get(1) : 200
al.removeAt(1);
System.out.println("al.size() : " + al.size());
// ์ถ๋ ฅ => al.size() : 2
System.out.println("al.get(1) : " + al.get(1));
// ์ถ๋ ฅ => al.get(1) : 300
al.add(400);
al.add(500);
al.add(600);
// ์ถ๋ ฅ => ๋ฐฐ์ด์ ํฌ๊ธฐ๊ฐ ์ฆ๊ฐ๋์์ต๋๋ค. 4 => 8
System.out.println("al.get(3) + al.get(4) : " + (al.get(3) + al.get(4)));
// ์ถ๋ ฅ => al.get(3) + al.get(4) : 1100
System.out.println("al.get(3).intValue() + al.get(4).intValue() : " + (al.get(3).intValue() + al.get(4).intValue()));
// ์ถ๋ ฅ => al.get(3) + al.get(4) : 1100
al.showAllValues();
// ์ถ๋ ฅ =>
/*
== ์ ์ฒด ๋ฐ์ดํฐ ์ถ๋ ฅ ==
0 : 100
1 : 300
2 : 400
3 : 500
4 : 600
*/
al.add(700, 1);
al.add(750, 1);
al.showAllValues();
// ์ถ๋ ฅ =>
/*
== ์ ์ฒด ๋ฐ์ดํฐ ์ถ๋ ฅ ==
0 : 100
1 : 750
2 : 700
3 : 300
4 : 400
5 : 500
6 : 600
*/
}
}
class ArrayList {
private Object[] arr;
private int lastIndex;
ArrayList() {
arr = new Object[2];
lastIndex = -1;
}
void add(int data) {
add(data, lastIndex + 1);
}
void add(int data, int index) {
extendArrIfNeed();
lastIndex++;
for (int i=lastIndex; i>index; i--) {
arr[i] = arr[i - 1];
}
arr[index] = data;
}
void extendArrIfNeed() {
if (lastIndex + 1 >= arr.length) {
Object[] temp = Arrays.copyOf(arr, arr.length * 2);
arr = temp;
}
}
void removeAt(int index) {
for (int i = index; i < lastIndex; i++) {
arr[i] = arr[i + 1];
}
lastIndex --;
}
int size() {
return lastIndex + 1;
}
Integer get(int index) {
return (Integer)arr[index];
}
void showAllValues() {
for (int i=0; i<=lastIndex; i++) {
System.out.println(arr[i]);
}
}
}
Java
๋ณต์ฌ