'array'에 해당되는 글 2건

  1. 2021.01.26 컬렉션 타입
  2. 2020.06.06 배열(Array)

컬렉션 타입

Swift/문법 2021. 1. 26. 18:09

컬렉션 타입

- 여러 값들을 묶어서 하나의 변수나 이런 값들을 표현함

 

Array

- 순서가 있는 리스트 컬렉션(List 컬렉션 타입)

- 요소를 맨 뒤에 추가하고 싶을 경우 append라는 메서드 사용

- 해당 멤버를 가지고 있는지 파악하고 싶을 때는 contains 메서드 사용(해당 멤버가 포함되어 있으면 true, 없으면 false 값이 나옴)

- 인덱스에 해당하는 값을 없애고 싶을 때는 remove라는 메서드 사용

 

* 빈 Int Array 생성

var integers : Array<Int> = Array<Int>() // Int 타입의 Array라는 뜻

 

integers.append(1)

integers.append(100)

 

integers.remove(at: 0)   // 0번째 인덱스에 해당하는 값(1) 삭제

integers.removeLast()   // 마지막 인덱스에 해당하는 값(100) 삭제

integers.removeAll()   // 모든 인덱스 삭제

 

* Array<Double>와 [Double]은 동일한 표현

빈 Double Array 생성

var doubles : Array<Double> = [Double]()

 

* 빈 String Array 생성

var strings : [String] = [String]()

 

* 빈 Character Array 생성

var characters : [Character] = []   // []는 새로운 빈 Array

 

* let을 사용하여 Array를 선언하면 불변 Array

let immutableArray = [1, 2, 3]   // 변경 불가능한 Array

 

- append, remove 메서드는 사용불가

 

 

Dictionary

- 키와 값의 쌍으로 이루어진 컬렉션(hash map과 비슷함)

 

* Key가 String 타입이고 Value가 Any인 빈 Dictionary 생성

var anyDictionary : Dictionary<String(Key), Any(Value)> = [String : Any]()

 

anyDictionary["someKey"] = "value"

anyDictionary["anotherKey"] = 100

 

anyDictionary   // ["someKey" : "vlaue", "anotherKey" : 100]

- someKey에 해당하는 값(value)이 있고, anotherKey에 해당하는 값(100)이 들어와 있음

 

* Key에 해당하는 값을 바꿔주고 싶을 때

anyDictionary["someKey"] = "dictionary"   // 새로운 값을 넣어주면 됨

anyDictionary   // ["someKey" : "dictionary", "anotherKey" : 100]

 

* Key에 해당하는 값을 없애고 싶을 때

anyDictionary.removeValue(forKey : "anotherKey")   // anotherKey에 해당하는 값(100)을 삭제

anyDictionary["someKey"] = nil    // someKey에 해당하는 값을 삭제할 때는 nil을 할당

 

let emptyDictionary : [String : String] = [:]   // 빈 Dictionary

let initalizedDictionary : [String : String] = ["name" : "khon", "gender" : "male"]

 

 

Set

- 순서가 없고, 멤버가 유일한 컬렉션

- insert를 사용해 요소를 추가할 수 있음

- Set는 꼭 안에 중복된 값이 없다는 것을 보장하기 때문에 아무리 같은 값을 많이 넣어줘도 해당 값은 한 번만 출력

- 안에 요소가 있는지 없는지 contains로 확인 가능

- 삭제는 remove 사용

- count를 사용해서 Set안에 몇 개의 요소가 있는지 확인할 수 있음

 

* 빈 Int Set 생성

var integerSet : Set<Int> = Set<Int>()   // Int 타입의 Set

integerSet.insert(1)

integerSet.insert(100)

integerSet.insert(99)

integerSet.insert(99)

integerSet.insert(99)

integerSet   // 100, 99, 1

 

integerSet.contains(1)   // 1 값이 있어서 true

integerSet.contains(2)   // 2 값이 없으므로 false

 

integerSet.remove(100)   // 100 삭제

integerSet.removeFirst()   // 99 삭제

 

integerSet.count   // 1

 

let setA : Set<Int> = [1, 2, 3, 4, 5]

let SetB : Set<Int> = [3, 4, 5, 6, 7]

 

let union : Set<Int> = setA.union(setB)   // union을 이용해 합집합을 구함 (2, 4, 5, 6, 7, 3, 1)

 

let sortedUnion : [Int] = Union.sorted()   // sorted 메서드를 이용해 같은 타입의 배열을 정렬 (1, 2, 3, 4, 5, 6, 7)

 

let intersectuon : Set<Int> = setA.intersection(setB)   // intersection을 이용한 교집합 (5, 3, 4)

 

let subtracting : Set<Int> = setA.subtracting(setB)   // subtracting을 이용한 차집합 (2, 1)

 

'Swift > 문법' 카테고리의 다른 글

함수 고급  (0) 2021.01.27
함수 기본  (0) 2021.01.27
Any / Anyobject / nil  (0) 2021.01.25
기본 데이터 타입  (0) 2021.01.25
let / var  (0) 2021.01.23
Posted by khon98
,

배열(Array)

자바 2020. 6. 6. 17:25

배열

- 프로그래밍을 하다 보면 같은 형태의 자료형을 수십, 수백 개를 사용할 때가 많다 이러한 변수들 중에서 같은 목적으로 사용하는 변수들을 하나의 이름으로 관리할 수 있다면 편한 부분이 많아지게 된다

 

- 배열은 자료형이 같은 무수히 많은 변수를 하나의 이름으로 관리하고자 할 때 사용하며 반복문과 더불어 사용할 수 있다

 

- 자바에서는 배열을 객체로 취급하며 배열을 사용하기 위해서는 먼저 기억 공간을 할당(객체 생성과 비슷)하는 작업을 해줘야만 한다

 

배열의 차수

- 배열의 차수는 배열을 사용하는 개발자 입자에서 배열에 담기는 데이터를 효율적으로 관리하기 위한 목적으로 이용되는 부분이다

 

- 예를 들어 학생의 이름을 관리하는 배열을 만든 경우 배열에 담기는 데이터가 학생 하나 이므로 1차원 배열을 이용할 수 있다

 

- 학생의 이름과 주소를 관리하는 배열이라고 한다면 학생 한 명당 두 개의 데이터가 필요하므로 2차원 배열을 이용할 수 있다

 

- 2차원 배열과 같이 차수가 1차가 아닌 배열을 다차원 배열이라고 부른다

 

배열의 생성

- 배열의 생성은 다음과 같이 한다

  자료형 [ ] 배열명 = new 자료형 [개수]; 

  자료형 배열명 [ ] = new 자료형 [개수];

 

- 창조 변수를 선언할 때 [ ]의 위치는 관계가 없으나 자바에서는 [ ]가 중간에 들어가는 것을 더 많이 사용한다

 

배열의 초기화

- 배열은 선언과 동시에 초기화를 할 수 있다

 

- 이때 배열에 넣어주는 데이터의 개수만큼 자동으로 배열이 생성된다

 

- int [ ] array = {1, 2, 3, 4, 5};     5개짜리 배열 생성

 

배열의 접근

- 배열은 만들어진 변수의 순서대로 인덱스 번호가 붙게 된다

 

- int [ ] array {1, 2, 3, 4, 5}인 경우 5개의 변수가 생성이 되며 0부터 1씩 증가되는 인덱스 번호를 갖게 된다

 

- array[0]은 첫 번째 변수, array[1]은 두 번째 변수에 접근을 하며 [ ]안의 숫자를 첨자라고 부른다

  

  array[0]  array[1]  array[2]  array[3]  array[4]

 

다 차원 배열

- 다 차원 배열은 1차원 배열과 같은 방법으로 접근을 하지만 첨자를 배열의 차수만큼 작성해서 접근을 한다

 

- 아래는 array [3][2] 배열의 예이다

 

array[0] > array[0][0]

          > array[0][1]

 

array[1] > array[1][0]

          > array[1][1]

 

array[2] > array[2][0]

          > array[2][1]

 

-----------------------------------------------------------------------------------------------------

int [ ] a1 = new int [10];

int a2 [ ] = new int [10]; 

 

//배열의 개수

System.out.pritntln("a1의 개수 : " + a1.length);

System.out.pritntln("a2의 개수 : " + a2.length);

 

int [ ] a3 = {1, 2, 3};

System.out.pritntln("a3의 개수 : " + a3.length);

 

for(int i = 0; i < a3.length ; i++){

    System.out.printf("a3[%d] = %d\n", i, a3[i]);

}

 

int [ ] a4 [ ] = new int [3][5];

int a5 [ ] [ ] = new int [3][5];

System.out.pritntln("a4의 개수 : " + a4.length);

System.out.pritntln("a4[0]의 개수 : " + a4[0].length);

 

int [ ][ ] a6 = {

        {1, 2, 3},

        {4, 5, 6},

        {7, 8, 9}

};

 

for(int i = 0 ; i < a6.length ; i++){

    for(int k = 0 ; k < a6[i].length ; k++){

        System.out.pritnf("a6[%d][%d] = %dn", i, k, a6[i][k]);

-----------------------------------------------------------------------------------------------------

 

예제

-----------------------------------------------------------------------------------------------------

import java.io.BufferedReader

 

try {

    // 키보드 입력용 도구 생성

    InputStreamReader ir = new InputStreamReader(System.in);

    BufferedReader br = new BufferedReader(ir);

    

    // 학생수

    System.out.print("학생수를 입력해 주세요 : ");

    int stuCnt = Integer.parseInt(br.readLine( ));

 

    // 과목 이름 배열

    String [ ] str = {"국어", "영어", "수학"};

 

    // 각 점수를 담을 변수 선언

    int [ ] [ ] point = new int[stuCnt][str.length];

 

    // 각 정수를 입력받는다

    int [ ] tot = new int[stuCnt];

    int [ ] avg = new int[styCnt];

    for(int i= 0 ; i < stuCnt ; i++) {

        tot[i] = 0;

        for(int k = 0 ; k < str.length ; k++) {

            System.out.printf("%d번째 학생 %s 점수 : ", i + 1, str[i]);

            point[i][k] = Integer.parseInt(br.readLine( ));

            tot[i] = tot[i] + point[i][k];

        }

        avg[i] = tot[i] / str.length;

    }

    int alltot = 0;

    int avgtemp = 0;

    int allavg = 0;

    for(int i = 0 ; i < stuCnt ; i++) {

        alltot = alltot + tot[i];

        avgtemp = avgtemp +avg[i];

    }

    allavg = avgtemp / stuCnt;

    for(int i = 0 : i < stuCnt ; i++) {

        System.out.printf("%d번째 학생 : ", i + 1);

        for(int k = 0 ; k < str.length ; k++) {

            System.out.printf("%d ", point[i][k]);

        }

        System.out.printf("%d %d\n", tot[i], avg[i]);

    }

    System.out.printf("%d %d\n", alltot, allavg);

}catch(Exception e) { }

}

-----------------------------------------------------------------------------------------------------

'자바' 카테고리의 다른 글

생성자(constructor)  (0) 2020.06.16
args  (0) 2020.06.16
Package  (0) 2020.06.03
클래스의 멤버 변수  (0) 2020.05.29
Class Member Method  (0) 2020.05.29
Posted by khon98
,