2주차 알고리즘 3번째 날이다. 알고리즘 문제를 푸는데 있어 조금은 수월해졌지만 개념이 잘 잡혀있지 않아 어떤상황에 어떤 객체를 사용하는지, 어떤 적절한 라이브러리를 사용하여 문제를 풀어야하는지 잘 알지 못한다.
코드를 작성할때 생각해야할 것 왜 이렇게 쓰는 걸까? 왜 이 메소드를 사용하는거지? 코드가 짧아지면 왜 좋은거지? 등등 많은 이유들을 생각하며 짜야한다는 것을 기억하자.
이번에 알고리즘 문제들을 풀며 의문점을 가졌던 것들을 적어보려한다.
test code
List<Integer> test = new ArrayList<>(1000000);
long startTime = System.nanoTime();
for (int i = 0; i < test.size(); i++) {
test.set(i, 1);
}
long endTime = System.nanoTime();
System.out.println(String.format("for-loop: %dns", endTime - startTime));
startTime = System.nanoTime();
test = test.stream().map(i -> i--).collect(Collectors.toList());
endTime = System.nanoTime();
System.out.println(String.format("Stream: %dns", endTime - startTime));
// 첫번째 실행
for-loop: 4553ns
Stream: 6306095ns
// 두번째 실행
for-loop: 3943ns
Stream: 5372920ns
// 세번째 실행
for-loop: 3835ns
Stream: 5323993ns
참고 사이트 : https://stackoverflow.com/questions/44180101/in-java-what-are-the-advantages-of-streams-over-loops, https://pamyferret.tistory.com/49
- Java Data Type
- Primitive Type
- Boolean Type(boolean)
- Numeric Type
- Integer Type
- Integer Type(short, int, long)
- Floating Point Type(float, double)
- Charter Type(char)
- Reference Type
- Class Type
- String Type
- Wrapper Class
- Interface Type
- Array Type
- Enum Type
long
타입을 사용을 한다면 가장 큰값은 9223372036854775807
이다. 이보다 정말 큰 숫자가 필요하다면 BigInteger
을 사용해야 된다..add()
, .subtract()
, .multiply()
, .divide()
메소드가 제공이 되고, 매개변수 또한 BigInteger를 받는다.java.lang.Object
를 상속 받는다.