โ ๋ฐฐ์ด์ ์ฌ์ฉํ ๋ ํํ ๋ฐ์ํ๋ ์๋ฌ์ธ ArrayIndexOutofBoundsException.
๋ฐฐ์ด์ ์ ์ธํ ๋ ๋ฐฐ์ด์ ํฌ๊ธฐ๋ฅผ ์ง์ ํ๊ธฐ ๋๋ฌธ์, ํฌ๊ธฐ์ ๋ฒ์ด๋๋ฉด ์๋ฌ ๋ฐ์.
import java.util.Arrays;
public class Main{
public static void main(String[] args){
String[] classGroup={"a","b","c","d"};
int[] gradeGroup=new int[4];
for(int i=0;i<gradeGroup.length;i++){
gradeGroup[i]=i;
}
for (int i=0;i<classGroup.length;i++){
System.out.println(classGroup[i]);
}
System.out.println(Arrays.toString(gradeGroup));//[0, 1, 2, 3]
for(int i:gradeGroup){
System.out.println(i);
}
int[][] myNumbers={{1,2,3,4},{5,6,7}};
for(int i=0;i<myNumbers.length;i++){
for(int j=0;j<myNumbers[i].length;j++){
System.out.println(myNumbers[i][j]);
}
}
}
}
JCF(Java Collections Framework)
์ด๋ฌํ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๋ฐฉ๋ฒ์ผ๋ก๋ ์๋ฐ์์ ์ ๊ณตํ๋ Java Collections Framework๊ฐ ์๋ค. Collection์ด๋ ๋ฐ์ดํฐ์ ์งํฉ, ๊ทธ๋ฃน์ ๋งํ๊ณ , JCF๋ ์ด๋ฌํ ๋ฐ์ดํฐ, ์๋ฃ๊ตฌ์กฐ์ธ ์ปฌ๋ ์ ๊ณผ ์ด๋ฅผ ๊ตฌํํ๋ ํด๋์ค๋ฅผ ์ ์ํ๋ ์ธํฐํ์ด์ค๋ฅผ ์ ๊ณตํ๋ค. ์ด ๊ธฐ๋ฅ์ ์ด์ฉํ๋ฉด ๋ฐฐ์ด์ ์ ์ฐํ๊ฒ ์ฌ์ฉ๊ฐ๋ฅ.
Collection ์ธํฐํ์ด์ค์ ํน์ง
1. Set ์ธํฐํ์ด์ค
HashSet : ๊ฐ์ฅ ๋น ๋ฅธ ์์ ์ ๊ทผ ์๋, ์์ ์์ธก ๋ถ๊ฐ
TreeSet : ์ ๋ ฌ ๋ฐฉ๋ฒ์ ์ง์ ํ ์ ์์
2. List ์ธํฐํ์ด์ค
LinkedList : ์๋ฐฉํฅ ํฌ์ธํฐ ๊ตฌ์กฐ๋ก ๋ฐ์ดํฐ์ ์ฝ์
, ์ญ์ ๊ฐ ๋น๋ฒํ ๊ฒฝ์ฐ ๋ฐ์ดํฐ์ ์์น์ ๋ณด๋ง ์์ ํ๋ฉด ๋๊ธฐ์ ์ ์ฉ
(์คํ, ํ, ์๋ฐฉํฅ ํ ๋ฑ์ ๋ง๋ค๊ธฐ ์ํ ์ฉ๋๋ก ์ฐ์)
Vector : ๊ณผ๊ฑฐ์ ๋์ฉ๋ ์ฒ๋ฆฌ๋ฅผ ์ํด ์ฌ์ฉํ์ผ๋ฉฐ, ๋ด๋ถ์์ ์๋์ผ๋ก ๋๊ธฐํ์ฒ๋ฆฌ๊ฐ ์ผ์ด๋ ๋น๊ต์ ์ฑ๋ฅ์ด ์ข์ง X.
ArrayList : ๋จ๋ฐฉํฅ ํฌ์ธํฐ ๊ตฌ์กฐ๋ก ๊ฐ ๋ฐ์ดํฐ์ ๋ํ ์ธ๋ฑ์ค๋ฅผ ๊ฐ์ง๊ณ ์์ด ์กฐํ ๊ธฐ๋ฅ์ ์ฑ๋ฅ์ด ๋ฐ์ด๋จ.
3. Map ์ธํฐํ์ด์ค
Hashtable : HashMap๋ณด๋ค๋ ๋๋ฆฌ์ง๋ง ๋๊ธฐํ ์ง์, null ๋ถ๊ฐ
HashMap : ์ค๋ณต๊ณผ ์์๊ฐ ํ์ฉ๋์ง ์์ผ๋ฉฐ null๊ฐ์ด ์ฌ ์ ์๋ค.
TreeMap : ์ ๋ ฌ๋ ์์๋๋ก key, value๋ฅผ ์ ์ฅํ์ฌ ๊ฒ์์ด ๋น ๋ฆ.
ArrayList
๋ฐฐ์ด์ ์ด์ฉํด์ List๋ฅผ ๋ง๋๋ ๋ฐฉ๋ฒ. ํน์ ์ธ๋ฑ์ค์ ๊ฐ์ ์ถ๊ฐํ ๊ฒฝ์ฐ, ๊ธฐ์กด์ data๋ฅผ ์์ผ๋ก ๋ฐ๊ณ , ๋น ๊ณต๊ฐ์ ์ฝ์ . ๋ฐ๋ผ์ ์ถ๊ฐํ๊ฑฐ๋ ์ญ์ ํ ๋๋ง๋ค ๋ฐ์ดํฐ๋ฅผ ์ด๋ํด์ผ ํ๋ค.(์๊ฐ์ด ๋ง์ด ์์). ๊ทธ๋ฌ๋ ๊ฐ์ ๊ฐ์ ธ์ฌ ๋(์กฐํ)๋ ๋น ๋ฅด๋ค.
iterator๋ ArrayList, HashSet๊ณผ ๊ฐ์ ์ปฌ๋ ์ ์ ๋ฐ๋ณตํ๋๋ฐ ์ฌ์ฉํ ์ ์๋ ๊ฐ์ฒด.
import java.util.ArrayList;
import java.util.Iterator;
public class Main{
public static void main(String[] args){
ArrayList<String> list=new ArrayList<>(Arrays.asList("h","e","l","l","o"));
System.out.println(list);//[h, e, l, l, o]
ArrayList<Integer> numbers=new ArrayList<>();
for(int i=0;i<4;i++){
numbers.add(i,i*10); //์์น, ๊ฐ
}
System.out.println(numbers);//[0, 10, 20, 30]
//์ญ์
numbers.remove(2);
System.out.println(numbers);//[0, 10, 30]
//์กฐํ
System.out.println(numbers.get(2));//30
//ํฌ๊ธฐ
System.out.println(numbers.size());//3
//Iterator
Iterator it=numbers.iterator();
while(it.hasNext()){
int value=(int)it.next();
System.out.print(value+" ");//0 10 30
}
System.out.println();
//for-each
for(int value:numbers){
System.out.print(value+" ");//0 10 30
}
System.out.println();
//ArrayList ๋ค์ง๊ธฐ
Collections.reverse(list);
System.out.println(list);//[o, l, l, e, h]
}
}
LinkedList
์ด ํด๋์ค๋ ๋ฐ์ดํฐ๊ฐ ์ฐ์๋ ์์น์ ์ ์ฅ๋์ง ์๊ณ ๋ชจ๋ ๋ฐ์ดํฐ๊ฐ ๋ฐ์ดํฐ ๋ถ๋ถ๊ณผ ์ฃผ์ ๋ถ๋ถ์ ๋ณ๋๋ก ๊ฐ์ง๊ณ ์๋ค. ๋ฐ์ดํฐ๋ ํฌ์ธํฐ์ ์ฃผ์๋ฅผ ์ฌ์ฉํ์ฌ ์ฐ๊ฒฐํ๋ค. ๊ฐ ๋ฐ์ดํฐ๋ ๋ ธ๋๋ผ ๋ถ๋ฆฌ๋ฉฐ, ๋ฐฐ์ด์์ ์์ฃผ ์ฝ์ , ์ญ์ ๊ฐ ์ผ์ด๋๋ ๊ฒฝ์ฐ ์ ๋ฆฌํ๋ค. ํ์ง๋ง ๊ฒ์์ ์์ด์๋ ArrayList๋ณด๋ค ๋๋ฆฌ๋ค.
์๋ฐ๋ก ๊ตฌํํ LinkedList
import java.util.ArrayList;
import java.util.Iterator;
class LinkedList{
private Node head;
private Node tail;
private int size=0;
private class Node{
private Object data;
private Node next;
public Node(Object input){
this.data=input;
this.next=null;
}
public String toString(){
return String.valueOf(this.data);
}
}
public void addFirst(Object input){//head์ data ์ถ๊ฐ
Node newNode=new Node(input);
newNode.next=head;
head=newNode;
size++;
if(head.next==null){//node๊ฐ 1๊ฐ
tail=head;
}
}
public void addLast(Object input){//tail์ data ์ถ๊ฐ
Node newNode=new Node(input);
if(size==0){
addFirst(input);
}else{
tail.next=newNode;
tail=newNode;
size++;
}
}
public Node node(int index){//node ํ์
Node x=head;
for(int i=0;i<index;i++){
x=x.next;
}
return x;
}
public void add(int index, Object input){//์ค๊ฐ์ ์ถ๊ฐ
if(index==0){
addFirst(index);
}else{
Node temp1=node(index-1);
Node temp2=temp1.next;
Node newNode=new Node(input);
temp1.next=newNode;
newNode.next=temp2;
size++;
if(newNode.next==null){//๋ง์ง๋ง ๋
ธ๋๋ผ๋ฉด
tail=newNode;
}
}
}
public String toString(){//๋ฆฌ์คํธ ์ ์ฒด ์ถ๋ ฅ
if(head==null){
return "";
}
Node temp=head;
String str="[";
while(temp.next!=null){
str+=temp.data+", ";
temp=temp.next;
}
str+=temp.data;
return str+"]";
}
public Object removeFirst(){
Node temp=head;
head=head.next;
Object returnData=temp.data;
temp=null;
size--;
return returnData;
}
public Object remove(int index){
if(index==0){
return removeFirst();
}
Node temp=node(index-1);
Node todoDeleted=temp.next;
temp.next=temp.next.next;
Object returnData=todoDeleted.data;
if(todoDeleted==tail){
tail=temp;
}
todoDeleted=null;
size--;
return returnData;
}
public Object removeLast(){
return remove(size-1);
}
public int size(){
return size;
}
public Object get(int index){
Node temp=node(index);
return temp.data;
}
public int indexOf(Object data){
Node temp=head;
int index=0;
while(temp.data!=data){
temp=temp.next;
index++;
if(temp==null){
return -1;
}
}
return index;
}
}
public class Main{
public static void main(String[] args){
LinkedList numbers=new LinkedList();
numbers.addFirst(30);
numbers.addLast(10);
System.out.println(numbers.node(0));
numbers.add(1,15);
System.out.println(numbers);//[30, 15, 10]
System.out.println(numbers.removeFirst());
System.out.println(numbers);//[15, 10]
System.out.println(numbers.remove(0));
System.out.println(numbers);//[10]
System.out.println(numbers.size());//1
System.out.println(numbers.get(0));//10
System.out.println(numbers.indexOf(10));//0
numbers.addLast(20);
numbers.addLast(30);
}
}
๋ด์ฅ๋ LinkedList ์ฌ์ฉํด๋ณด๊ธฐ
import java.util.LinkedList;
import java.util.Iterator;
class Main {
public static void main(String[] args) {
LinkedList<String> cars=new LinkedList<>();
cars.addFirst("Volvo");
cars.addLast("BMW");
cars.add(1,"Ford");
for(String c:cars){
System.out.print(c+" ");//Volvo Ford BMW
}
System.out.println();
Iterator it=cars.iterator();
while(it.hasNext()){
String c=(String)it.next();
System.out.print(c+" ");//Volvo Ford BMW
}
}
}
cf.
java.util ํจํค์ง : Java์ java.util ํจํค์ง(Package)๋ Java ํ๋ก๊ทธ๋๋ฐ์ ์ ์ฉํ ํด๋์ค๋ค์ ๋ชจ์๋ ๊ฒ์ผ๋ก ๋ํ์ ์ธ ํด๋์ค๋ก๋ ๋ ์ง์ ๊ด๋ จ๋ Date, Calendar ๊ฐ ์์ผ๋ฉฐ, ์๋ฃ๊ตฌ์กฐ์ ๊ด๋ จ๋ Collection ํ๋ ์์ํฌ ๊ด๋ จ ํด๋์ค๋ค์ด ํฌํจ๋์ด ์๋ค.
java.util ํจํค์ง ํฌํจ๋๋ ํด๋์ค๋ค :
AbstractCollection, AbstractList, AbstractSequentialList, LinkedList, ArrayList, Vector, Stack, AbstractSet, HashSet, LinkedHashSet, TreeSet, AbstractMap, HashMap, LinkedHashMap, TreeMap, Arrays, BitSet, Calendar, GregorianCalendar, Collection, Date, Dictionary, Hashtable, Properties, EventObject, Locale, Observable, Random, Scanner, StringTokenizer
Java - ์ธ์ฝ๋ค, ์๋ฌผ์ ๋ณด ์ ๋ฌธ์ํค
#JAVA
www.incodom.kr
์ฐธ๊ณ )
'Java๐' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๐งก์ค์ฒฉ ํด๋์ค,์ธํฐํ์ด์ค & ์ต๋ช ๊ฐ์ฒด (0) | 2023.01.18 |
---|---|
๐์ธํฐํ์ด์ค(2) (0) | 2023.01.16 |
๐์ธํฐํ์ด์ค(1) (0) | 2023.01.16 |
๐๋ณ์์ ํ์ (0) | 2022.11.30 |
์๋ฐ์ ์์(JDK์ ์๋ฐ ํ๋ก๊ทธ๋จ ์คํ ๊ตฌ์กฐ) (0) | 2022.11.22 |