-
JAVA ์๋ฐ List๊ณ์ด ArrayListJAVA 2020. 8. 13. 22:19
๐ฏ ์๋ฐ List ์ปฌ๋ ์ ์ ArrayList๋ฅผ ์ฐ์ตํด๋ณธ๋ค.
ArrayList
์ปฌ๋ ์ ์ ๋ ๋ค๋ฅธ ํ์ ์ธํฐํ์ด์ค์ธ List๋ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ ๋ ์์๊ฐ ์์ด์ ์ค๋ณต ์ ์ฅ์ด ๊ฐ๋ฅํ๋ค. ์ ์ฅ๋ ์์น๊ฐ์ ์ฌ์ฉํ ์ ์๊ธฐ ๋๋ฌธ์ ์ปฌ๋ ์ ์ค๊ฐ์ ๊ฐ์ ์ฝ์ ํ๊ฑฐ๋ ์์ ํ๋ ์์ ๋ฑ Set๋ณด๋ค ํจ์ฌ ๋ค์ํ ๊ธฐ๋ฅ์ ์ฒ๋ฆฌํ๋ ๋ฉ์๋๋ฅผ ์ ๊ณตํ๋ค. List๋ ์ธํฐํ์ด์ค์ด๊ธฐ ๋๋ฌธ์ ArrayList ํด๋์ค๋ฅผ ํตํด ๊ตฌํํด์ ์ฌ์ฉํ ์ ์๋ค.
ArrayList ํด๋์ค ์ฌ์ฉํ๊ธฐ
import java.util.ArrayList; import java.util.Arrays; import java.util.Iterator; import java.util.List; public class Ex10_7 { public static void main(String[] args) { List<String> list = new ArrayList<String>(); list.add("ํ๊ธธ๋"); list.add("์ด์์ "); list.add("์ ๊ด์"); list.add("ํ๊ธธ๋"); list.add("ํ๊ธธ๋"); System.out.println("0์์น๊ฐ ์ถ๋ ฅ: "+list.get(0)); System.out.println("toString() ์ ์ฒด ์ถ๋ ฅ: "+list); for(String data : list) { System.out.println("forEach ์ ์ฒด ์ถ๋ ฅ: "+data); } Iterator<String> ite = list.iterator(); while(ite.hasNext()) { String data = ite.next(); System.out.println("Iterator:"+data); } System.out.println("Set์ ๋ฐ์ดํฐ ๊ฐฏ์? "+ list.size()); System.out.println("Set์ด ๋น์ด์๋? "+ list.isEmpty()); System.out.println("Set์ ์ด์์ ํฌํจ์ฌ๋ถ? "+list.contains("์ด์์ ")); Object [] arr = list.toArray(); System.out.println("๋ฐฐ์ด๋ก ๋ณํ ํ ์ถ๋ ฅ: "+Arrays.toString(arr)); System.out.println("์ ์ฒด ์ญ์ ์คํ"); list.clear(); System.out.println("toString() ์ ์ฒด์ถ๋ ฅ:"+list); } }
ArrayList ํด๋์ค์ ๊ฐ์ฒด๋ฅผ ์์ฑํ๊ณ ์คํธ๋ง ํ์ ๋ง ๋ฐ๋ ์ ๋ค๋ฆญ์ ์ง์ ํ๋ค. ๋คํ์ฑ์ ์ ์ฉํด์ ์์ ์ธํฐํ์ด์ค์ธ Listํ์ ์ผ๋ก ์์ฑํ๋ค. ์ ๊ณผ ๋ฌ๋ฆฌ ๋ฆฌ์คํธ์ ์ค๋ณต๋ ๊ฐ๋ค์ด ์ ์ฅ๋ ์ ์๊ธฐ ๋๋ฌธ์ ํ๊ธธ๋์ด ์ฌ๋ฌ ๋ฒ ์ ์ฅ๋์๋ค. ๋ฆฌ์คํธ๋ ๋ฐฐ์ด์ index์ฒ๋ผ ์์๊ฐ ์๊ธฐ ๋๋ฌธ์ ์์น๊ฐ์ธ index์ get()๋ฉ์๋๋ฅผ ํตํด ์ํ๋ ๊ฐ์ ์ป์ด์ฌ ์ ์๋ค.
toArray() ๋ฉ์๋๋ฅผ ์ฌ์ฉํ๋ฉด ๋ฆฌ์คํธ๋ฅผ ๋ฐฐ์ด๋ก ๋ณํ ํ ์ถ๋ ฅํ ์ ์๋ค.
ArrayList ํด๋์ค๋ก ๋ฐ์ดํฐ ์ฝ์ , ์ถ๊ฐ, ์ญ์ , ์์ ํ๊ธฐ
import java.util.ArrayList; import java.util.List; public class Ex10_8 { public static void main(String[] args) { List<String> list = new ArrayList<String>(); list.add("ํ๊ธธ๋"); list.add("์ด์์ "); list.add("๊ฐ๊ฐ์ฐฌ"); list.add("์ ๊ด์"); System.out.println("์์ ํ๊ธฐ ์ ์ ์ฒด ์ถ๋ ฅ: "+list); //๋ฐ์ดํฐ ์ฝ์ list.add(1, "์ ๋์ "); //๋ฐ์ดํฐ ์์ list.set(0, "์๊บฝ์ "); //์ธ๋ฑ์ค๋ฅผ ์ด์ฉํ ๋ฐ์ดํฐ ์ญ์ list.remove(3); //๊ฐ์ ์ด์ฉํ ๋ฐ์ดํฐ ์ญ์ list.remove("์ด์์ "); System.out.println("์์ ํ๊ธฐ ํ ์ ์ฒด ์ถ๋ ฅ"+list); } }
List๋ ์ธ๋ฑ์ค๋ฅผ ๊ฐ๊ธฐ ๋๋ฌธ์ ๋ฐ์ดํฐ๋ฅผ ๊ฒ์, ์ฝ์ , ์ญ์ , ์์ ํ๋ ์์ ์ ํ ์ ์๋ค. ์ธ๋ฑ์ค 1์ ์ ๋์ ์ด๋ฆ์ ์ฝ์ ํ๊ณ , ์ธ๋ฑ์ค 0์ ๋ฐ์ดํฐ๋ฅผ ์๊บฝ์ ์ผ๋ก ์์ ํ๊ณ , ์ธ๋ฑ์ค3์ ๋ฐ์ดํฐ๋ฅผ ์ญ์ ํ๋ค.
Comparator์ธํฐํ์ด์ค๋ฅผ ์ฌ์ฉํด์ ArrayList ์ ๋ ฌํ๊ธฐ
import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.List; class Person{ String name; int age; public Person(String name, int age) { this.name = name; this.age = age; } @Override public String toString() { return super.toString(); } }//end Person class PersonComp implements Comparator<Person>{ @Override public int compare(Person o1, Person o2) { int result = 1; if(o1.age >= o2.age) result = -1; //๋ด๋ฆผ์ฐจ์ return result; /* int result = -1; if(o1.age >= o2.age) result = 1; //์ค๋ฆ์ฐจ์ return result; */ } } public class Ex10_9 { public static void main(String[] args) { List<Person> list = new ArrayList<Person>(); list.add(new Person("ํ๊ธธ๋", 20)); list.add(new Person("์ด์์ ", 44)); list.add(new Person("์ ๊ด์", 18)); list.add(new Person("๊ฐ๊ฐ์ฐฌ", 66)); //age๋ฅผ ์ ๋ ฌ Collections.sort(list, new PersonComp()); for (Person person : list) { System.out.println(person); } } }
์ง๋๋ฒ์ Comparator ์ธํฐํ์ด์ค๋ฅผ ์ฌ์ฉํด ๋ฐฐ์ด์ ์ ๋ ฌํด๋ณด์๋ค. ๊ฐ์ ๋ฐฉ๋ฒ์ผ๋ก ArrayList๋ฅผ ํน์ ๊ฐ์ ๊ธฐ์ค์ผ๋ก ์ ๋ ฌํ ์ ์๋ค. Comparator ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ๋ PersonComp ์ผ๋ฐํด๋์ค๋ฅผ ๋ง๋ ๋ค. ์ ๋ค๋ฆญ์ <Person>ํด๋์ค ํ์ ์ด๋ค. Comparator ์ธํฐํ์ด์ค์ ๋ฉ์๋ compare() ๋ฉ์๋๋ฅผ ์ค๋ฒ๋ผ์ด๋ฉํด์ ํ๋ผ๋ฏธํฐ๋ก ๋ฐ์ ๋ ๊ฐ์ ๋น๊ตํ์ฌ ๋ฆฌํด๊ฐ์ด ์์๋ฉด ๋ด๋ฆผ์ฐจ์ํ๊ณ ์์ ๋๋ 0์ด๋ฉด ์ค๋ฆ์ฐจ์์ผ๋ก ๋ฆฌํดํ๋๋ก ๊ตฌํํ๋ค.
mainํจ์ ์์ ArrayList ๊ฐ์ฒด๋ฅผ ์์ฑํ๊ณ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ค. ์ปฌ๋ ์ ์ ์ ๋ ฌํด์ ๋ฐํํ๋ Collections.sort() ๋ฉ์๋์ ์ธ์๋ก ๋ฆฌ์คํธ์ ์ ๋ ฌ๊ธฐ์ค์ ๊ตฌํํ PersonComp ๊ฐ์ฒด๋ฅผ ๋ฃ๊ณ ํธ์ถํ ๋ค forEach ๋ฐ๋ณต๋ฌธ์ ๋๋ ค ๋ฆฌ์คํธ์ ๋ชจ๋ ์ ๋ณด๋ฅผ ๋์ด์์ผ๋ก ๋ด๋ฆผ์ฐจ์ํ ๊ฒฐ๊ณผ๋ฅผ ํ๋ฆฐํธํ๋ค.
ArrayList ์ฐ์ตํ๊ธฐ
์ถ์ํด๋์ค Ship์ ๊ตฌํํ๋ ๋ ํด๋์ค๋ฅผ ๋ง๋ ๋ค. ์ผ์ ๊ฑฐ๋ฆฌ ์ดํญ ์ ๋ณํ๋ ์ฐ๋ฃ๋์ ์ถ๋ ฅํ๋ค.
public abstract class Ship { String shipName; int fuelTank; public Ship() {} public Ship(String shipName, int fuelTank) { super(); this.shipName = shipName; this.fuelTank = fuelTank; } public abstract void sail(int dist); public abstract void refuel(int fuel); public String getShipName() { return shipName; } public void setShipName(String shipName) { this.shipName = shipName; } public int getFuelTank() { return fuelTank; } public void setFuelTank(int fuelTank) { this.fuelTank = fuelTank; } }
์ถ์ํด๋์ค Ship์ sail๊ณผ refuel ๋ผ๋ ์ถ์๋ฉ์๋๋ฅผ ๊ฐ๊ณ ์๋ค.
public class Boat extends Ship { public Boat() {} public Boat(String shipName, int fuelTank) { super(shipName, fuelTank); } @Override public void sail(int dist) { setFuelTank(getFuelTank() - (dist *10)); } @Override public void refuel(int fuel) { setFuelTank(getFuelTank() + (fuel *10)); } }
public class Cruise extends Ship { public Cruise() {} public Cruise(String shipName, int fuelTank) { super(shipName, fuelTank); } @Override public void sail(int dist) { setFuelTank(getFuelTank() - (dist *13)); } @Override public void refuel(int fuel) { setFuelTank(getFuelTank() + (fuel * 8)); } }
Boat์ Cruise ํด๋์ค๋ ์ถ์ํด๋์ค Ship์ ๊ตฌํํ๋ค. Boat๋ ํ ๋ฒ ์ดํํ๋ฉด ์ฐ๋ฃ๊ฐ 10๋งํผ ๊ฐ์ํ๊ณ Cruise๋ 10๋งํผ ์ฆ๊ฐํ๋ค. ํ ๋ฒ์ ์ฃผ์ ์ Boat๋ ์ฐ๋ฃ๊ฐ 10๋งํผ ์ฆ๊ฐํ๊ณ Cruise๋ ์ฐ๋ฃ๊ฐ 8๋งํผ ์ฆ๊ฐํ๋๋ก ๊ตฌํํ๋ค.
import java.util.ArrayList; public class ShipTest { public static void main(String[] args) { Boat boat = new Boat("Boat", 500); Cruise cruise = new Cruise("Cruise", 1000); //ArrayList์ ๋ ์ ๋ฐ add ArrayList<Ship> list = new ArrayList<Ship>(); list.add(boat); list.add(cruise); //๋ ์ ๋ฐ์ ์ด๋ฆ๊ณผ ํ์ฌ ์ฐ๋ฃ๋ ์ถ๋ ฅ System.out.println(boat.getShipName()+" "+boat.getFuelTank()); System.out.println(cruise.getShipName()+" "+cruise.getFuelTank()); //๋ ์ ๋ฐ์ sailํจ์ ํธ์ถ .sail(10) boat.sail(10); cruise.sail(15); //๋ ์ ๋ฐ์ ์ด๋ฆ๊ณผ ํ์ฌ ์ฐ๋ฃ๋ ์ถ๋ ฅํ์ฌ ์๋ก ์ฐ๋ฃ๋์ด ๋ฌ๋ผ์ก๋์ง ํ์ธ System.out.println(boat.getShipName()+" "+boat.getFuelTank()); System.out.println(cruise.getShipName()+" "+cruise.getFuelTank()); //for์ด์ฉ ๋ ์ ๋ฐ์ ๊ฒ์ฌํ์ฌ boat๋ฉด .refuel(20), cruise๋ฉด refuel(30)์ค์ for(Ship x : list) { if(x.getShipName()=="Boat") { boat.refuel(20); }else if(x.getShipName()=="Cruise") { boat.refuel(30); } } System.out.println(boat.getShipName()+" "+boat.getFuelTank()); System.out.println(cruise.getShipName()+" "+cruise.getFuelTank()); } }
Boat์ Cruise ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ฉด์ ์ด๊ธฐ๊ฐ์ ๋ฃ์ด์ค๋ค. ArrayList ๊ฐ์ฒด๋ฅผ ์์ฑํ๊ณ ๋ ํด๋์ค ๊ฐ์ฒด๋ฅผ ์ ์ฅํ๋ค. ํจ์๋ฅผ ํธ์ถํด ์ดํ ๊ฑฐ๋ฆฌ์ ์ฃผ์ ๋์ ์ธ์๋ก ๋ณด๋ด์ ๋ ์ ๋ฐ์ ์ฐ๋ฃ๋์ ํ์ธํ๋ค.
๐ NEXT : Map๊ณ์ด HashMap ๊ณต๋ถํ๊ธฐ
๋ฐ์ํ'JAVA' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
JAVA ์๋ฐ Object ํด๋์ค equals(), toString() (0) 2020.08.15 JAVA ์๋ฐ Map ๋งต HashMap (0) 2020.08.15 JAVA ์๋ฐ ์ปฌ๋ ์ Set๊ณ์ด HashSet (0) 2020.08.12 JAVA ์๋ฐ ์ ๋ค๋ฆญ (Generic) (0) 2020.08.11 JAVA ์๋ฐ ์์ธ์ฒ๋ฆฌ, throws, ์ฌ์ฉ์์ ์ ์์ธํด๋์ค (2) 2020.08.10