[Java] 자료구조

jy9922·2022년 7월 13일
0

Java

목록 보기
4/13
post-thumbnail

Java 자료구조

배열

  • size가 고정되어 있다.
  • 동일한 data type을 사용해야 한다.

collection

무조건 객체형태로만 저장이 가능하다

List 계열

ArrayList class, LinkedList class, . . .

  • 사이즈가 동적이다.
  • 서로 다른 data type이 가능하다.

Map 계열

HashMap class, HashSet class

  • 자바스크립트 객체(JSON)와 형태가 같다.
  • key - value 쌍으로 데이터를 저장한다.

String

String 사용 방법(2가지)

  • " " 을 이용해서 문자열 생성하는 방법
String a = "Hello";

Heap 안에 String pool에 "Hello" 라는 문자열이 들어간다.
"Hello" 값을 가지는 변수는 String pool에 있는 같은 주소의 "Hello"를 가리킨다.

  • new String("Hello"); 사용하는 방법
String b = new String("Hello");

Heap안의 string pool 밖에 생긴다.
따라서 위의 주소와는 다른 주소를 가진다.

package lecture0713; 

public class Main {
	public static void main(String[] args) {
		
		String str1 = "Hello";
		String str2 = "Hello";
		String str3 = new String("Hello");
		
		System.out.println(str1 == str2); // true
		System.out.println(str1 == str3); // false
		
		System.out.println(str1.equals(str3)); // true
		// 왜?
		// String 안에 있는 equals는 이미 오버라이딩 된 상태에서 제공해준다.
		// 따라서 메모리 주소는 다르지만 내용이 같기 때문에 true가 반환된다.
		
		// 문자열 내용을 비교할때는 당연히 equals() 사용
		// 문자열 내용이 같은지 확인할 때 == 사용하지 않아요!
	}

}

String.equals( )

Wrapper class

  • 원시값을 객체화시킬 수 있다.
  • Wrapper class는 primitive data type을 객체화시키기 위해 존재한다.
primitive data typewrapper class
byteByte class
shortShort class
intInteger class
longLong class
floatFloat class
doubleDouble class
characterCharacter class
booleanBoolean class

코드로 자료구조 살펴보기

ArrayList

package lecture0713;

import java.util.ArrayList;
import java.util.List;

class Student{
	
}
public class Main {
	public static void main(String[] args) {
		// 배열과 비슷하다
		// 단, 동적으로 크기가 늘리거나 줄일 수 있다
		// 저장은 무조건 객체형태로만 저장된다
		List list = new ArrayList<>();
		list.add("Hello");
		list.add("홍길동");
		list.add(100); // 3번째칸에 숫자(int 100)이 저장된거 같아 보여요 - 자동으로 객체화 시켜서 저장시켜줌
        // list.add(new Integer(100));
		list.add(new Student()); 
		
		// List를 만들어서 사용
		// 같은 데이터 타입을 이용하는 경우가 사실 대부분 - 타입명시
		List<String> list1 = new ArrayList<String>();
		list1.add("홍길동");
		list1.add(100); // error
	}
}

Map

package lecture0713;

import java.util.HashMap;
import java.util.Map;

class Student{
	
}
public class Main {
	public static void main(String[] args) {
		// Map
		Map map = new HashMap<>();
		map.put("1", "홍길동");
		map.put("2" , "Hello");
		
		// Map generic
		Map<String,String> map1 = new HashMap<String, String>();
		map1.put("1", "홍길동1");
		map1.put("2", "홍길동2");
		
		// API reference를 참조해서 각 collection의 이용방법을 찾아서 써보아요
	}
}

0개의 댓글