본문 바로가기

JAVA

(158)
List활용 // ArrayList class MyArrayList { public static void main(String[] args) { // ArrayList 생성 ArrayList myList = new ArrayList(); // 요소 추가 myList.add(10); myList.add(20); myList.add(30); // 요소 접근 System.out.println("첫 번째 요소: " + myList.get(0)); // 10 출력 // 요소 수정 myList.set(1, 25); // 요소 삭제 myList.remove(2); // 리스트 크기 System.out.println("리스트 크기: " + myList.size()); // 리스트 순회 for (int i = 0; i < myLis..
List 장단점 비교 // 사용방법 및 결과는 똑같으나, 시행속도가 완전히 다른것을 우리는 알고있지!! // add : 거의 비슷해 (하나하나는 array가 빠른데, 배열길이가 커지면 복사해야되는게 별루) // get : (특정값을 상수로 표현해서 가져오는 거니까) ArrayList가 빠르겠지 // 배열을 다 출력할거야 : (그나마)ArrayList로 해야된다! (linked는 get을 하기위해 반복문을 계~속 돌거잖아? 미친짓임) // remove : linkedList가 빠르겠다 (array는 앞에있는거 지우려면 뒤에값을 앞으로 계~속 밀잖아.) ArrayList arrayList = new ArrayList(); LinkedList linkedList = new LinkedList(); arrayList.add("안녕 ..
Linked List 활용 public static void main(String[] args) { // Linked List // 메모리가 필요한 만큼만 딱! 깔끔하게 생긴다 (null인 고리 찾으면 거기서 끝나니까.) // --> 알아서 고리가 착착 연결되니까 배열길이를 복사하는 과정이 필요없단 말임 MyLinkedList list = new MyLinkedList(); // 이게 리스트 선언한건데, 이게 없어지지 않는 이상 연결고리는 계속 돌아간다(= 메모리가 소멸을 안한다구) list.add("안녕1"); list.add("안녕2"); list.add("안녕3"); list.add("안녕4"); list.add("안녕5"); list.add("안녕6"); list.remove(1);// 배열의 2번째를 삭제하겠다 list...
Data Structure // 자료구조 (Data Structure) // 자료구조의 선택 --> 각 자료구조는 모두 장/단점이 존재함 // 장단점마다 다 정리돼있음... 잘써보자 // 주요 자료구조 API 인터페이스와 클래스 // 1. List 인터페이스: 순서가 있는 데이터를 저장하며 중복을 허용합니다. // ## 주로 ArrayList는 검색이 많은 경우에 사용 / LinkedList는 잦은 삽입/삭제 시 사용 // ★★ ArrayList: 동적 배열을 구현한 클래스 // - 크기 조절 및 빠른 임의 액세스가 필요한 경우에는 ArrayList가 효율적일 수 있지만, // - 중간에 요소를 자주 추가 또는 삭제해야 하는 경우에는 다른 자료구조(예: LinkedList)를 고려할 필요가 있음!! // // ** 장점 // - ..
Generic 활용 // 제너릭 사용 예제 public class Main_GenericEx { public static void main(String[] args) { // Student[] arr = new Student[10]; --> 보통은 배열을 이렇게 만들었지 // List에 무언가 담을건데, type은 Student로 할게--> 배열이랑 99% 흡사 // 1. ArrayList를 생성하고, Student 객체를 저장할 수 있는 리스트를 만듭니다. // ---> Student 클래스를 타입으로 지정할 수 있다! ArrayList list = new ArrayList(); // 2. 배열에 내용추가 list.add(new Student()); list.add(new Student()); list.add(new St..
Generic3 // extends : 제너릭 타입을 사용할 때 타입 매개변수의 상한을 정의하는 데 사용됨 // ex) // T extends Number는 T가 Number 클래스 또는 Number 클래스의 하위 클래스 중 하나인 타입만 허용함을 의미 class AAA{// E String클래스를 상속받겠다 public void processNumber(T number) { // T는 Number 또는 Number의 하위 클래스여야 함 } }
Generic2 // 활용 방법 public class Main_Generic2 { public static void main(String[] args) { AAA a1 = new AAA(); a1.v1 = "이것은 String"; a1.v2 = true; System.out.println(a1.v3); } } class AAA{ // 이렇게도 가능하다 Q v1; T v2; R v3; int v4; } // 약어 // T (Type): // T는 주로 제너릭 클래스나 메서드에서 타입 매개변수로 사용됩니다. // T는 "타입(Type)"을 나타내며, 제너릭 클래스 또는 메서드를 정의할 때 어떤 타입이든 가능하다는 것을 나타냅니다. // 예를 들어, ArrayList는 어떤 타입의 요소도 저장할 수 있는 제너릭 리스트를 나..
Generic // 제너릭: // --> 코드의 재사용성과 타입 안정성(type safety)을 향상시키는 도구 // --> 다양한 데이터 타입을 처리하는 클래스나 메서드를 작성할 때 사용 // 활용 // 1. 클래스 제너릭: 클래스에 대한 타입 매개변수를 사용하여 클래스 내부에서 다양한 타입의 데이터를 처리할 수 있게 함 //ex) ArrayList와 같이 제너릭 클래스를 사용하여 다양한 타입의 요소를 저장할 수 있는 동적 배열을 생성할 수 있음 ArrayList integerList = new ArrayList(); ArrayList stringList = new ArrayList(); // 2. 메서드 제너릭: 메서드에 대한 타입 매개변수를 사용하여 메서드 내에서 동적으로 데이터 타입을 처리할 수 있게 함 // ..