์•ˆ๋…•! ์ง€๋‚œ ์ˆ˜์—…์—์„œ ์šฐ๋ฆฌ๋Š” ํด๋ž˜์Šค์— ๋Œ€ํ•ด ์•Œ๊ฒŒ ๋˜์—ˆ๊ณ  ArrayList์ด ํด๋ž˜์Šค๋กœ ๊ฐ€์žฅ ์ผ๋ฐ˜์ ์ธ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ฐฐ์› ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ an ArrayList๊ณผ ์ผ๋ฐ˜ ๋ฐฐ์—ด์˜ ๋ช‡ ๊ฐ€์ง€ ์ฐจ์ด์ ์„ ์ง€์ ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์šฐ๋ฆฌ๋Š” ํ•œ ๊ฐ€์ง€ ์ฃผ์ œ , ์ฆ‰ArrayList . ์ง€๊ธˆ ๋…ผ์˜ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ArrayList์—์„œ ์š”์†Œ ์‚ญ์ œ - 1์ผ๋ฐ˜ ๋ฐฐ์—ด์—์„œ ์š”์†Œ๋ฅผ ์‚ญ์ œํ•˜๋Š” ๊ฒƒ์ด ๊ทธ๋‹ค์ง€ ํŽธ๋ฆฌํ•˜์ง€ ์•Š๋‹ค๊ณ  ์ด๋ฏธ ์–ธ๊ธ‰ํ–ˆ์Šต๋‹ˆ๋‹ค. ์š”์†Œ ์ž์ฒด๋ฅผ ์‚ญ์ œํ•  ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ’์„ "์ œ๋กœ์•„์›ƒ"(null๋กœ ์„ค์ •)ํ•  ์ˆ˜๋งŒ ์žˆ์Šต๋‹ˆ๋‹ค.

public class Cat {

   private String name;

   public Cat(String name) {
       this.name = name;
   }

   public static void main(String[] args) {

       Cat[] cats = new Cat[3];
       cats[0] = new Cat("Thomas");
       cats[1] = new Cat("Behemoth");
       cats[2] = new Cat("Lionel Messi");

       cats[1] = null;

       System.out.println(Arrays.toString(cats));
   }

   
@Override
   public String toString() {
       return "Cat{" +
               "name='" + name + '\'' +
               '}';
   }
}
์ถœ๋ ฅ: [Cat{name='Thomas'}, null, Cat{name='Lionel Messi'}] ๊ทธ๋Ÿฌ๋‚˜ ๋ฐฐ์—ด ์š”์†Œ๋ฅผ null๋กœ ์„ค์ •ํ•˜๋ฉด "๊ตฌ๋ฉ"์ด ์ƒ๊น๋‹ˆ๋‹ค. ๋ฐฐ์—ด์—์„œ ์œ„์น˜๋ฅผ ์ œ๊ฑฐํ•˜์ง€ ์•Š๊ณ  ํ•ด๋‹น ๋‚ด์šฉ๋งŒ ์ œ๊ฑฐํ–ˆ์Šต๋‹ˆ๋‹ค. 50๋งˆ๋ฆฌ์˜ ๊ณ ์–‘์ด ๋ฐฐ์—ด์ด ์žˆ๊ณ  ๊ทธ ์ค‘ 17๋งˆ๋ฆฌ๋ฅผ ์ด๋Ÿฐ ์‹์œผ๋กœ ์ œ๊ฑฐํ•˜๋ฉด ์–ด๋–ค ์ผ์ด ์ผ์–ด๋‚ ์ง€ ์ƒ์ƒํ•ด ๋ณด์‹ญ์‹œ์˜ค. ์šฐ๋ฆฌ๋Š” 17๊ฐœ์˜ ๊ตฌ๋ฉ์„ ๊ฐ€์ง„ ๋ฐฐ์—ด์„ ๊ฐ–๊ฒŒ ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ณ„์† ์ถ”์ ํ•ด ๋ณด์„ธ์š”! ์ƒˆ ๊ฐ’์„ ์“ธ ์ˆ˜ ์žˆ๋Š” ๋นˆ ์…€์˜ ์ˆ˜๋ฅผ ๊ธฐ์–ตํ•˜๋Š” ๊ฒƒ์€ ๋น„ํ˜„์‹ค์ ์ž…๋‹ˆ๋‹ค. ํ•œ ๊ฐ€์ง€ ์‹ค์ˆ˜๋ฅผ ํ•˜๋ฉด ์›ํ•˜๋Š” ๊ฐœ์ฒด ์ฐธ์กฐ๋ฅผ ๋ฎ์–ด์“ฐ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ๋ฌผ๋ก  ์ด๋ฅผ ์ข€ ๋” ์‹ ์ค‘ํ•˜๊ฒŒ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์š”์†Œ๋ฅผ ์ œ๊ฑฐํ•œ ํ›„ ์š”์†Œ๋ฅผ ๋ฐฐ์—ด์˜ ๋งจ ์•ž์œผ๋กœ ์ด๋™ํ•˜์—ฌ ๋์— "๊ตฌ๋ฉ"์„ ๋„ฃ์Šต๋‹ˆ๋‹ค.

public static void main(String[] args) {

   Cat[] cats = new Cat[4];
   cats[0] = new Cat("Thomas");
   cats[1] = new Cat("Behemoth");
   cats[2] = new Cat("Lionel Messi");
   cats[2] = new Cat("Fluffy");

   cats[1] = null;

   for (int i = 2; i < cats.length-1; i++) {
       cats [i-1] = cats [i];// Move the elements to the front of the array, so the empty position is at the end
   }

   System.out.println(Arrays.toString(cats));
}
์ถœ๋ ฅ: [Cat{name='Thomas'}, Cat{name='Fluffy'}, Cat{name='Fluffy'}, null] ์ด๊ฒƒ์€ ๋” ์ข‹์•„ ๋ณด์ด์ง€๋งŒ ๊ฐ•๋ ฅํ•œ ์†”๋ฃจ์…˜์ด๋ผ๊ณ  ํ•  ์ˆ˜๋Š” ์—†์Šต๋‹ˆ๋‹ค. ๋ฐฐ์—ด์—์„œ ์š”์†Œ๋ฅผ ์‚ญ์ œํ•  ๋•Œ๋งˆ๋‹ค ์ด ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•ด์•ผ ํ•œ๋‹ค๋Š” ์‚ฌ์‹ค ์™ธ์— ๋‹ค๋ฅธ ์ด์œ ๊ฐ€ ์—†๋‹ค๋ฉด! ์ด๊ฒƒ์€ ๋‚˜์œ ์„ ํƒ์ž…๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์œผ๋กœ ๋ณ„๋„์˜ ๋ฉ”์„œ๋“œ๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

public void deleteCat(Cat[] cats, int indexToDelete) {
   //...delete the cat corresponding to the index and move the elements
}
๊ทธ๋Ÿฌ๋‚˜ ์ด๊ฒƒ์€ ๊ฑฐ์˜ ์‚ฌ์šฉ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด ๋ฐฉ๋ฒ•์€ ๊ฐ์ฒด ์—๋งŒ ์‚ฌ์šฉํ•  ์ˆ˜ Cat์žˆ๊ณ  ๋‹ค๋ฅธ ์œ ํ˜•์—๋Š” ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์ฆ‰, ํ”„๋กœ๊ทธ๋žจ์— ๋ฐฐ์—ด๊ณผ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜๋ ค๋Š” ๋˜ ๋‹ค๋ฅธ 100๊ฐœ์˜ ํด๋ž˜์Šค๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ ๊ฐ ํด๋ž˜์Šค์—์„œ ์ •ํ™•ํžˆ ๋™์ผํ•œ ๋…ผ๋ฆฌ๋กœ ๋™์ผํ•œ ๋ฉ”์„œ๋“œ๋ฅผ ์ž‘์„ฑํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ์™„์ „ํžˆ ์žฌ์•™์ž…๋‹ˆ๋‹ค -_- ํ•˜์ง€๋งŒ ArrayListํด๋ž˜์Šค๋Š” ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•ฉ๋‹ˆ๋‹ค! ์š”์†Œ๋ฅผ ์ œ๊ฑฐํ•˜๊ธฐ ์œ„ํ•œ ํŠน์ˆ˜ ๋ฉ”์„œ๋“œ๋ฅผ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค.remove()

public static void main(String[] args) {

   ArrayList<Cat> cats = new ArrayList<>();
   Cat thomas = new Cat("Thomas");
   Cat behemoth = new Cat("Behemoth");
   Cat lionel = new Cat("Lionel Messi");
   Cat fluffy = new Cat ("Fluffy");

   cats.add(thomas);
   cats.add(behemoth);
   cats.add(lionel);
   cats.add(fluffy);
   System.out.println(cats.toString());

   cats.remove(1);

   System.out.println(cats.toString());
}
๊ฐ์ฒด์˜ ์ธ๋ฑ์Šค๋ฅผ ๋ฉ”์„œ๋“œ์— ์ „๋‹ฌํ•˜๋ฉด ๊ฐ์ฒด๋ฅผ ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค(๋ฐฐ์—ด์—์„œ์ฒ˜๋Ÿผ). ์ด remove()๋ฐฉ๋ฒ•์—๋Š” ๋‘ ๊ฐ€์ง€ ํŠน๋ณ„ํ•œ ๊ธฐ๋Šฅ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ฒซ์งธ, "๊ตฌ๋ฉ"์„ ๋‚จ๊ธฐ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด์ „์— ์ง์ ‘ ์ž‘์„ฑํ•œ ์š”์†Œ๊ฐ€ ์ค‘๊ฐ„์—์„œ ์ œ๊ฑฐ๋  ๋•Œ ์š”์†Œ๋ฅผ ์ด๋™ํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ๋…ผ๋ฆฌ๋ฅผ ์ด๋ฏธ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค . ์ด์ „ ์ฝ”๋“œ์˜ ์ถœ๋ ฅ์„ ์‚ดํŽด๋ณด์‹ญ์‹œ์˜ค.

[Cat{name='Thomas'}, Cat{name='Behemoth'}, Cat{name='Lionel Messi'}, Cat{name='Fluffy'}]

[Cat{name='Thomas'}, Cat{name='Lionel Messi'}, Cat{name='Fluffy'}]
๊ฐ€์šด๋ฐ ๊ณ ์–‘์ด ํ•œ ๋งˆ๋ฆฌ๋ฅผ ๋นผ๊ณ  ๋‚˜๋จธ์ง€๋Š” ๋นˆ ๊ณต๊ฐ„์ด ์—†๋„๋ก ์˜ฎ๊ฒผ์Šต๋‹ˆ๋‹ค. ๋‘˜์งธ , ์ธ๋ฑ์Šค(์ผ๋ฐ˜ ๋ฐฐ์—ด๊ณผ ๊ฐ™์Œ)๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์ฐธ์กฐ๋กœ ๋„ ๊ฐ์ฒด๋ฅผ ์‚ญ์ œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค .

public static void main(String[] args) {

   ArrayList<Cat> cats = new ArrayList<>();
   Cat thomas = new Cat("Thomas");
   Cat behemoth = new Cat("Behemoth");
   Cat lionel = new Cat("Lionel Messi");
   Cat fluffy = new Cat ("Fluffy");

   cats.add(thomas);
   cats.add(behemoth);
   cats.add(lionel);
   cats.add(fluffy);
   System.out.println(cats.toString());

   cats.remove(lionel);

   System.out.println(cats.toString());
}
์ถœ๋ ฅ: [Cat{name='Thomas'}, Cat{name='Behemoth'}, Cat{name='Lionel Messi'}, Cat{name='Fluffy'}] [Cat{name='Thomas'}, Cat{name='Behemoth'}, Cat{name='Fluffy'}] ์›ํ•˜๋Š” ๊ฐœ์ฒด์˜ ์ธ๋ฑ์Šค๋ฅผ ํ•ญ์ƒ ์ถ”์ ํ•˜๊ณ  ์‹ถ์ง€ ์•Š์€ ๊ฒฝ์šฐ ๋งค์šฐ ํŽธ๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์ธ ์‚ญ์ œ ๋ฐฉ๋ฒ•์„ ์•Œ์•„๋‚ธ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์ด์ œ ์ด ์ƒํ™ฉ์„ ์ƒ์ƒํ•ด ๋ด…์‹œ๋‹ค. ๋ชฉ๋ก์„ ๋ฐ˜๋ณตํ•˜๊ณ  ํŠน์ • ์ด๋ฆ„์„ ๊ฐ€์ง„ ๊ณ ์–‘์ด๋ฅผ ์ œ๊ฑฐํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค . for์ด๋ฅผ ์œ„ํ•ด Rishi์˜ ์ˆ˜์—…์—์„œ ์†Œ๊ฐœํ•œ ๋น ๋ฅธ ๋ฃจํ”„(for-each ๋ฃจํ”„๋ผ๊ณ ๋„ ํ•จ)๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค .

public static void main(String[] args) {

   ArrayList<Cat> cats = new ArrayList<>();
   Cat thomas = new Cat("Thomas");
   Cat behemoth = new Cat("Behemoth");
   Cat lionel = new Cat("Lionel Messi");
   Cat fluffy = new Cat ("Fluffy");

   cats.add(thomas);
   cats.add(behemoth);
   cats.add(lionel);
   cats.add(fluffy);

   for (Cat cat: cats) {

       if (cat.name.equals("Behemoth")) {
           cats.remove(cat);
       }
   }

   System.out.println(cats);
}
์ฝ”๋“œ๋Š” ์™„๋ฒฝํ•˜๊ฒŒ ๋…ผ๋ฆฌ์ ์œผ๋กœ ๋ณด์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๊ทธ ๊ฒฐ๊ณผ๋Š” ๋งค์šฐ ๋†€๋ž์Šต๋‹ˆ๋‹ค. java.util.ArrayList$Itr.checkForComodification(ArrayList.java:859)์˜ java.util.ArrayList$Itr.next(ArrayList. java:831) at Cat.main(Cat.java:25) ์ผ์ข…์˜ ์˜ค๋ฅ˜๊ฐ€ ์žˆ์œผ๋ฉฐ ๋ฐœ์ƒํ•œ ์ด์œ ๊ฐ€ ๋ช…ํ™•ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด ํ”„๋กœ์„ธ์Šค์—๋Š” ํ•ด๊ฒฐํ•ด์•ผ ํ•˜๋Š” ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ๋‰˜์•™์Šค๊ฐ€ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค. ๊ธฐ์–ตํ•ด์•ผ ํ•  ์ผ๋ฐ˜์ ์ธ ๊ทœ์น™์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์ปฌ๋ ‰์…˜์„ ๋ฐ˜๋ณตํ•˜๋ฉด์„œ ๋™์‹œ์— ํ•ด๋‹น ์š”์†Œ๋ฅผ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์šฐ๋ฆฌ๋Š” ๋‹จ์ˆœํžˆ ์ œ๊ฑฐ๊ฐ€ ์•„๋‹ˆ๋ผ ๋ชจ๋“  ์ข…๋ฅ˜์˜ ๋ณ€ํ™”๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ๊ณ ์–‘์ด ์ œ๊ฑฐ๋ฅผ ์ƒˆ ๊ณ ์–‘์ด๋ฅผ ์‚ฝ์ž…ํ•˜๋ ค๋Š” ์‹œ๋„๋กœ ๋ฐ”๊พธ๋ฉด ๊ฒฐ๊ณผ๋Š” ๋™์ผํ•ฉ๋‹ˆ๋‹ค.

for (Cat cat: cats) {

   cats.add(new Cat("Salem Saberhagen"));
}

System.out.println(cats);
"main" ์Šค๋ ˆ๋“œ์˜ ์˜ˆ์™ธ java.util.ConcurrentModificationException at java.util.ArrayList$Itr.checkForComodification(ArrayList.java:859) at java.util.ArrayList$Itr.next(ArrayList.java:831) at Cat.main( Cat.java:25) ํ•˜๋‚˜์˜ ์ž‘์—…์„ ๋‹ค๋ฅธ ์ž‘์—…์œผ๋กœ ๋ณ€๊ฒฝํ–ˆ์ง€๋งŒ ๊ฒฐ๊ณผ๋Š” ๋ณ€๊ฒฝ๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ๋™์ผํ•œ ConcurrentModificationException ์ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค . ๋ชฉ๋ก์„ ๋ฐ˜๋ณตํ•˜๋Š” ๋™์•ˆ ๋ชฉ๋ก์„ ๋ณ€๊ฒฝํ•˜์—ฌ ์œ„์˜ ๊ทœ์น™์„ ์–ด๊ธฐ๋ ค๊ณ  ํ•  ๋•Œ ์ •ํ™•ํ•˜๊ฒŒ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. Java์—์„œ๋Š”์ปฌ๋ ‰์…˜์„ ๋ฐ˜๋ณตํ•˜๋Š” ๋™์•ˆ ํ•ญ๋ชฉ์„ ์‚ญ์ œํ•˜๊ธฐ ์œ„ํ•ด iterator (Iteratorํด๋ž˜์ŠคIterator๋Š” ์š”์†Œ ๋ชฉ๋ก์„ ์•ˆ์ „ํ•˜๊ฒŒ ๋ฐ˜๋ณตํ•  ์ฑ…์ž„์ด ์žˆ์Šต๋‹ˆ๋‹ค. 3๊ฐ€์ง€ ๋ฐฉ๋ฒ•๋งŒ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋งค์šฐ ๊ฐ„๋‹จํ•ฉ๋‹ˆ๋‹ค.
  • hasNext()- ๋ชฉ๋ก์— ๋‹ค์Œ ํ•ญ๋ชฉ์ด ์žˆ๋Š”์ง€ ๋˜๋Š” ์ด๋ฏธ ๋งˆ์ง€๋ง‰ ํ•ญ๋ชฉ์— ๋„๋‹ฌํ–ˆ๋Š”์ง€ ์—ฌ๋ถ€์— ๋”ฐ๋ผ true ๋˜๋Š” false๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
  • next()- ๋ชฉ๋ก์˜ ๋‹ค์Œ ํ•ญ๋ชฉ์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
  • remove()- ๋ชฉ๋ก์—์„œ ํ•ญ๋ชฉ์„ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค.
๋ณด์‹œ๋‹ค์‹œํ”ผ ์ดํ„ฐ๋ ˆ์ดํ„ฐ๋Š” ์šฐ๋ฆฌ์˜ ํ•„์š”์— ๋งž๊ฒŒ ๋งž์ถค ์ œ์ž‘๋˜์—ˆ์œผ๋ฉฐ ๋™์‹œ์— ๋ณต์žกํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋ชฉ๋ก์— ๋‹ค์Œ ์š”์†Œ๊ฐ€ ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๊ณ  ๋‹ค์Œ ์š”์†Œ๊ฐ€ ์žˆ์œผ๋ฉด ํ‘œ์‹œํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค.

Iterator<Cat> catIterator = cats.iterator();// Create an iterator
while(catIterator.hasNext()) {// As long as there are elements in the list
  
   Cat nextCat = catIterator.next();// Get the next element
   System.out.println(nextCat);// Display it
}
์ถœ๋ ฅ: Cat{name='Thomas'} Cat{name='Behemoth'} Cat{name='Lionel Messi'} Cat{name='Fluffy'} ๋ณด์‹œ๋‹ค์‹œํ”ผ, ๋Š” ArrayList์ด๋ฏธ ๋ฐ˜๋ณต์ž: iterator(). ๋˜ํ•œ ๋ฐ˜๋ณต์ž๋ฅผ ๋งŒ๋“ค ๋•Œ ์ž‘์—…ํ•  ๊ฐœ์ฒด์˜ ํด๋ž˜์Šค๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค( <Cat>). ํ•ต์‹ฌ์€ ๋ฐ˜๋ณต์ž๊ฐ€ ์›๋ž˜ ์ž‘์—…์„ ์‰ฝ๊ฒŒ ์ฒ˜๋ฆฌํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด "Lionel Messi"๋ผ๋Š” ์ด๋ฆ„์˜ ๊ณ ์–‘์ด๋ฅผ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค.

Iterator<Cat> catIterator = cats.iterator();// Create an iterator
while(catIterator.hasNext()) {// As long as there are elements in the list

   Cat nextCat = catIterator.next();// Get the next element
   if (nextCat.name.equals("Lionel Messi")) {
       catIterator.remove();// Delete the cat with the specified name
   }
}

System.out.println(cats);
์ถœ๋ ฅ: [Cat{name='Thomas'}, Cat{name='Behemoth'}, Cat{name='Fluffy'}]remove() ๋ฐ˜๋ณต์ž์˜ ๋ฉ”์„œ๋“œ ์—์„œ ์ธ๋ฑ์Šค๋‚˜ ์ด๋ฆ„์„ ์ง€์ •ํ•˜์ง€ ์•Š์€ ๊ฒƒ์„ ๋ˆˆ์น˜์ฑ„์…จ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ! ๋ฐ˜๋ณต์ž๋Š” ๋ณด์ด๋Š” ๊ฒƒ๋ณด๋‹ค ๋” ๋˜‘๋˜‘ํ•ฉ๋‹ˆ๋‹ค. remove()๋ฐ˜๋ณต์ž๊ฐ€ ๋ฐ˜ํ™˜ํ•œ ๋งˆ์ง€๋ง‰ ์š”์†Œ๋ฅผ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค. ๋ณด์‹œ๋‹ค์‹œํ”ผ, ์šฐ๋ฆฌ๊ฐ€ ์›ํ•˜๋Š” ๋Œ€๋กœ ์ž‘๋™ํ–ˆ์Šต๋‹ˆ๋‹ค. :) ์›์น™์ ์œผ๋กœ ์—์„œ ์š”์†Œ๋ฅผ ์ œ๊ฑฐํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์•Œ์•„์•ผ ํ•  ๋ชจ๋“  ๊ฒƒ์ž…๋‹ˆ๋‹ค ArrayList. ๊ธ€์Ž„, ๊ฑฐ์˜ ๋ชจ๋“  ๊ฒƒ. ๋‹ค์Œ ๊ฐ•์˜์—์„œ๋Š” ์ด ํด๋ž˜์Šค ๋‚ด๋ถ€๋ฅผ ์‚ดํŽด๋ณด๊ณ  ๋‹ค์–‘ํ•œ ๋ฉ”์„œ๋“œ ํ˜ธ์ถœ ์ค‘์— ์–ด๋–ค ์ผ์ด ๋ฐœ์ƒํ•˜๋Š”์ง€ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค :) ๊ทธ๋•Œ๊นŒ์ง€!