프로그래밍 언어 7

[JAVA] immutable 객체?방어적 복사?

immutable 객체?방어적 복사? immutable한 객체...?? 클린코드 교육을 들으며 정말 많이 들었지만 무언가 겉핥기로 아는 것 같아서 정리해보려고 한다!!!! Immuable object 정의 객체 지향 프로그래밍에 있어서 불변객체(immutable object)는 생성 후 그 상태를 바꿀 수 없는 객체를 말한다. 반대 개념으로는 가변(mutable) 객체로 생성 후에도 상태를 변경할 수 있다. 객체 전체가 불변인 것도 있고, C++에서 const 데이터 멤버를 사용하는 경우와 같이 일부 속성만 불변인 것도 있다. 또, 경우에 따라서는 내부에서 사용하는 속성이 변화해도 외부에서 그 객체의 상태가 변하지 않은 것 처럼 보인다면 불변 객체로 보기도 한다. 예를 들어, 비용이 큰 계산의 결과를 캐..

JAVA - 스트림 가공하기

전체 요소중에서 내가 원하는 것만 뽑아낼 수 있습니다 filter은 스트림 내 요소들을 하나씩 평가해서 걸러내는 작업입니다. Stream stream = names.stream() .filer(name -> name.contains("a")); Map map은 스트림 내 요소들을 하나씩 특정한 값으로 변환해줍니다.이떄 값을 변환하기 위해 람다를 인자로 받습니다. 스트림에 들어간 값이 input이 되어서 특정 로직을 거친 후 output이 되어 리턴되는 새로운 스트림에 담기게 됩니다. 이러한 작업을 매핑이라고 합니다. 간단한 예제입니다. 스트림 내 String의 toUpperCase메소드를 실행해서 대문자로 변환한 값들이 담긴 스트림을 리턴합니다. Stream stream = names.stream() ...

JAVA - 스트림 생성하기

클린코드를 진행하면서 가장 생소하지만 가장 많이 쓰고 있는 문법인 스트림에 대해서 정리해볼까 한다. 1. 생성하기 -배열,컬렉션,빈 스트림 - Stream.builder(),stream.generate(),stream.iterate() -기본 타입형 String 파일 스트림 - 병렬 스트림 , 스트림 연결하기 스트림은 데이터의 흐름입니다. 배열 또는 컬렉션 인스턴스에 함수 여러개를 조합하여 원하는 결과를 필터링하고 가공된 결과를 얻을 수 있습니다. 람다를 이용하여 코드의 양을 줄이고 간결하게 표현할 수 있습니다. 즉 배열과 컬렉션을 함수형으로 처리할 수 있습니다. 배열 스트림 String arr = new String[]{"1","2"}; Stream stream = Arrays.stream(arr); ..

프로그래머스 - 완주하지 못한 선수

난 일단 어차피 participant 이 completion보다 하나 큰건 확실하니 동명이인을 while문을 써서 처리를 했고 결과는 잘나오는데 시간 효율성에서 실패를 하였다. 왜일까....? 모르겠다 하지만 다른 사람 코드를 참고해본다 1) 딕셔너리를 만들었다. 딕셔너리 쌍 a [2] ='b'이면 {2:'b'}라는 딕셔너리를 추가한다는 뜻. temp 에 어떻게 저장되나 봤더니 이런식이다 참가자들의 이름을 key로 이용한다. value는 key의 이름을 가진 수가 된다. i는 이름이다 string 형!!! for문을 돌면서 i(이름)가 temp안에 있으면 temp[i] 딕셔너리 value값을 하나 더함 두번째 for문을 돌면서 temp[0] = 이름[0] 즉 value 값이 1이면 지우고 아이예 딕셔너리..

백준 10845 큐 구현하기

큐를 구현하는 문제였다. 나는 IT개론에서 배운 컴퓨터 알고리즘의 일종이라고만 생각했는데 이걸 파이썬으로도 구현할 수 있었다 다만 def 이런데서 쓰는 변수랑 나중에 인스턴스 만들 때 선언용?으로 만드는 변수가 같으면 안된다 그리고 배운 개념은 난 front 랑 back을 단순히 리스트 인덱싱으로 해결 하려 했는데 다른 사람 풀이를 보니 파이썬 라이브러리가 있었다 from collections import deque 사용 사용 이유: front, back 을 구현하기 위해 deque([])에서는 큐의 왼쪽, 오른쪽 양방향으로 원소를 넣을 수 있다. front는 큐의 가장 왼쪽 (가장 먼저 들어온 원소)을 리턴해야 하기 때문에 popleft()를 사용하고 back은 큐의 가장 오른쪽 (가장 최근에 들어온 ..

객체 간 협력 - 기본 클래스 구현

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101package sec1;//멤버 변수 선언public class student1 { String name; int money;//매개변수를 가지는 생성자 public student1(String name, int money) { this.name = name; this.money = money; }//takebus 메소드 public void takebus(ta..

728x90