via-6: Array, ArrayList, List
배열과, 배열리스트&리스트
- 배열은 동적으로 크기 할당이 불가능하고 리스트(배열리스트)는 가능하다.
- 처음 배열 생성때 크기를 n으로 한다면 이후 코드작업에서 n개의 이상으로 크기를 늘릴수도 없고 저장할 수 도 없다.
- 하지만 list는 메서드(remove, add)를 이용해 늘릴수도, 줄일수도, 저장할수도 있다
배열의특징:
- 열은 연속된 메모리 공간으로 이루어져 있어서 메모리 관리가 용이하다.
- 그리고 배열의 값들은 Index(인덱스)로 이루어져 있기에 인덱스로 접근 시 빠르게 해당 값을 찾을 수 있다.
- 하지만, 위에서 말했듯이 동적 할당이 불가능하다는 큰 단점을 가지고 있다.
- 참조형식
크기 초과
타입 오류
ArrayList의 특징:
- 리스트는 포인터를 사용하여, 다음 데이터의 주소 값을 가지고 있기에
- 데이터 추가/삭제가 편리하다.
- 그 말인즉슨, 데이터의 크기를 동적으로 할당할 수 있다는 것이다.
- 하지만, 위에서 말한 포인터를 사용하여 다음 데이터의 주소 값을 가지고 있어야
- 하므 로 불필요한 메모리가 추가로 사용되기에 메모리 측면에서는 비효율적이다.
- 그뿐만 아니라, 배열에는 Index라는 Key(키) 값이 존재하지만 리스트에는
- 그러한 키값이 존재하지 않기에 검색에는 유용하지 않다.
→ 크기가 고정되어있다면 array, 유동성이 있다면 ArrayList!
List특징:
- 마찬가지로 고정되지 않는 가변 객체 타입이다.
- ArrayList의 단점을 보완하여 컴파일시 배열의 타입추론을 한다.
- 즉, 같은 타입만 저장가능하고, 때문에 박싱/언박싱이 발생하지않는다.
- Add()제거, RemoveAt():제거, List.Count:사이즈 확인
null관련 연산자
a는 int값이나 Null을 가질 수 있는 변수이다. a가 Null 이 아니면 c에 a를 넣어주고, a가 Null 이면 0을 넣어주는 코드를 3가지 방법으로 사용할 수 있다. 누가 봐도 3번이 확연하게 간단해진 것을 볼 수 있다. ?? (Null 병합 연산자) 는 두 개의 피연산자를 가지고 있다. (?? 의 양옆에) 왼쪽에 있는 피연산자가 Null 이 아니면 그 값을 사용하게 되고, Null 이면 오른쪽에 있는 피연산자를 사용하게 된다.
배열과 for문 활용
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Player : MonoBehaviour
{
public Player2 _player2;
public int _moveSpeed;
BoxCollider _box;
public int score;
public GameObject[] students;
public GameObject sph;
void Start()
{
_box = this.gameObject.GetComponent<BoxCollider>();
_box.isTrigger = true;
for (int i = 0; i < students.Length; i++)
{
students[i].transform.position = new Vector3(0, 0, i+1);
GameObject giveGameobj = Instantiate(sph, students[i].transform);
giveGameobj.transform.localPosition = new Vector3(0, 0, 0.5f);
}
}
}
public List<GameObject> player2List;
public GameObject cube2;
void Start()
{
player2List.Add(cube2);
}
- 최초
- 최종
찾기
Find("오브젝트이름")
= 하이라키에있는 오브젝트이름과 똑같은 오브젝트들을 불러옴FindGameObjectsWithTag("태그이름")
= 태그이름과 같은 오브젝트들을 불러옴
player2array = GameObject.FindGameObjectsWithTag("Player");
GameObject.FindObjectOfType<컴퍼넌트이름>
= 컴퍼넌트이름과 같은 컴퍼넌트가 들어가 있는 오브젝트를 불러옴
출처 및 참고: https://im-first-rate.tistory.com/44
댓글남기기