Skip to content

Commit d57d420

Browse files
committed
Initialized.
0 parents  commit d57d420

File tree

336 files changed

+11392
-0
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

336 files changed

+11392
-0
lines changed

.gitignore

+29
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
### IntelliJ IDEA ###
2+
out/
3+
!**/src/main/**/out/
4+
!**/src/test/**/out/
5+
6+
### Eclipse ###
7+
.apt_generated
8+
.classpath
9+
.factorypath
10+
.project
11+
.settings
12+
.springBeans
13+
.sts4-cache
14+
bin/
15+
!**/src/main/**/bin/
16+
!**/src/test/**/bin/
17+
18+
### NetBeans ###
19+
/nbproject/private/
20+
/nbbuild/
21+
/dist/
22+
/nbdist/
23+
/.nb-gradle/
24+
25+
### VS Code ###
26+
.vscode/
27+
28+
### Mac OS ###
29+
.DS_Store

.idea/.gitignore

+3
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.idea/kotlinc.xml

+6
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.idea/libraries/KotlinJavaRuntime.xml

+26
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.idea/misc.xml

+6
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.idea/modules.xml

+8
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.idea/vcs.xml

+6
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

README.md

+180
Large diffs are not rendered by default.

assets/book-cover.png

799 KB
Loading

assets/mindmap.png

252 KB
Loading

java-algorithm-interview.iml

+29
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<module type="JAVA_MODULE" version="4">
3+
<component name="NewModuleRootManager" inherit-compiler-output="true">
4+
<exclude-output />
5+
<content url="file://$MODULE_DIR$">
6+
<sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" />
7+
<sourceFolder url="file://$MODULE_DIR$/test" isTestSource="true" />
8+
</content>
9+
<orderEntry type="inheritedJdk" />
10+
<orderEntry type="sourceFolder" forTests="false" />
11+
<orderEntry type="module-library" scope="TEST">
12+
<library name="JUnit5.8.1">
13+
<CLASSES>
14+
<root url="jar://$MAVEN_REPOSITORY$/org/junit/jupiter/junit-jupiter/5.8.1/junit-jupiter-5.8.1.jar!/" />
15+
<root url="jar://$MAVEN_REPOSITORY$/org/junit/jupiter/junit-jupiter-api/5.8.1/junit-jupiter-api-5.8.1.jar!/" />
16+
<root url="jar://$MAVEN_REPOSITORY$/org/opentest4j/opentest4j/1.2.0/opentest4j-1.2.0.jar!/" />
17+
<root url="jar://$MAVEN_REPOSITORY$/org/junit/platform/junit-platform-commons/1.8.1/junit-platform-commons-1.8.1.jar!/" />
18+
<root url="jar://$MAVEN_REPOSITORY$/org/apiguardian/apiguardian-api/1.1.2/apiguardian-api-1.1.2.jar!/" />
19+
<root url="jar://$MAVEN_REPOSITORY$/org/junit/jupiter/junit-jupiter-params/5.8.1/junit-jupiter-params-5.8.1.jar!/" />
20+
<root url="jar://$MAVEN_REPOSITORY$/org/junit/jupiter/junit-jupiter-engine/5.8.1/junit-jupiter-engine-5.8.1.jar!/" />
21+
<root url="jar://$MAVEN_REPOSITORY$/org/junit/platform/junit-platform-engine/1.8.1/junit-platform-engine-1.8.1.jar!/" />
22+
</CLASSES>
23+
<JAVADOC />
24+
<SOURCES />
25+
</library>
26+
</orderEntry>
27+
<orderEntry type="library" name="KotlinJavaRuntime" level="project" />
28+
</component>
29+
</module>

src/ch02/GenericExample.java

+31
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
package ch02;
2+
3+
import java.util.ArrayList;
4+
import java.util.List;
5+
6+
public class GenericExample {
7+
public static void main(String[] args) {
8+
List listNames1 = new ArrayList();
9+
listNames1.add("카리나");
10+
listNames1.add("윈터");
11+
listNames1.add("지젤");
12+
listNames1.add("닝닝");
13+
String name0 = (String) listNames1.get(0);
14+
15+
listNames1.add(34);
16+
// String name4 = (String) listNames1.get(4); // 에러 발생
17+
18+
// ---
19+
20+
List<String> listNames2 = new ArrayList<String>();
21+
listNames2.add("카리나");
22+
listNames2.add("윈터");
23+
listNames2.add("지젤");
24+
listNames2.add("닝닝");
25+
// listNames2.add(34); // 에러 발생
26+
27+
for (String name : listNames2) {
28+
System.out.println(name);
29+
}
30+
}
31+
}

src/ch02/LambdaExpressionExample.java

+23
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
package ch02;
2+
3+
public class LambdaExpressionExample {
4+
@FunctionalInterface
5+
interface MathInterface {
6+
double getPiValue();
7+
}
8+
9+
public static void main(String[] args) {
10+
MathInterface math1 = new MathInterface() {
11+
@Override
12+
public double getPiValue() {
13+
return 3.141592;
14+
}
15+
};
16+
System.out.println("Pi: " + math1.getPiValue());
17+
18+
// ---
19+
20+
MathInterface math2 = () -> 3.141592;
21+
System.out.println("Pi: " + math2.getPiValue());
22+
}
23+
}
+56
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
package ch02;
2+
3+
import java.util.ArrayList;
4+
import java.util.Collections;
5+
import java.util.Comparator;
6+
import java.util.List;
7+
8+
public class LambdaExpressionSortExample {
9+
static class Member {
10+
String name;
11+
int age;
12+
13+
public Member(String name, int age) {
14+
this.name = name;
15+
this.age = age;
16+
}
17+
18+
@Override
19+
public String toString() {
20+
return "Member{" +
21+
"name='" + name + '\'' +
22+
", age=" + age +
23+
'}';
24+
}
25+
}
26+
27+
public static void main(String[] args) {
28+
// 리스트에 데이터 삽입
29+
List<Member> members1 = new ArrayList<>();
30+
members1.add(new Member("윈터", 23));
31+
members1.add(new Member("카리나", 24));
32+
members1.add(new Member("닝닝", 22));
33+
34+
// 정렬을 익명 클래스로 구현
35+
Collections.sort(members1, new Comparator<Member>() {
36+
@Override
37+
public int compare(Member o1, Member o2) {
38+
return o2.age - o1.age;
39+
}
40+
});
41+
42+
System.out.println(members1);
43+
44+
// ---
45+
46+
List<Member> members2 = new ArrayList<>();
47+
members2.add(new Member("윈터", 23));
48+
members2.add(new Member("카리나", 24));
49+
members2.add(new Member("닝닝", 22));
50+
51+
// 정렬을 람다 표현식으로 구현
52+
members2.sort((o1, o2) -> o2.age - o1.age);
53+
54+
System.out.println(members2);
55+
}
56+
}

src/ch02/SteamAPIExample.java

+74
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
package ch02;
2+
3+
import java.util.ArrayList;
4+
import java.util.Arrays;
5+
import java.util.Collections;
6+
import java.util.List;
7+
import java.util.stream.Collectors;
8+
9+
public class SteamAPIExample {
10+
static class Member {
11+
String name;
12+
int age;
13+
14+
public Member(String name, int age) {
15+
this.name = name;
16+
this.age = age;
17+
}
18+
}
19+
20+
public static void main(String[] args) {
21+
List<Member> members1 = new ArrayList<>();
22+
members1.add(new Member("카리나", 24));
23+
members1.add(new Member("윈터", 23));
24+
members1.add(new Member("지젤", 24));
25+
members1.add(new Member("닝닝", 22));
26+
27+
// 스트림 API를 사용하지 않은 예전 방식
28+
List<String> chosenMembers = new ArrayList<>();
29+
// 나이가 24세인 멤버의 이름을 chosenMembers 리스트에 삽입
30+
for (Member member : members1) {
31+
if (member.age == 24)
32+
chosenMembers.add(member.name);
33+
}
34+
// chosenMembers 정렬
35+
Collections.sort(chosenMembers);
36+
// chosenMembers 출력
37+
for (String name : chosenMembers) {
38+
System.out.println(name);
39+
}
40+
41+
// ---
42+
43+
List<Member> members2 = new ArrayList<>();
44+
members2.add(new Member("카리나", 24));
45+
members2.add(new Member("윈터", 23));
46+
members2.add(new Member("지젤", 24));
47+
members2.add(new Member("닝닝", 22));
48+
49+
members2.stream() // 스트림 API
50+
.filter(m -> m.age == 24) // 24세 필터링
51+
.map(m -> m.name) // 이름 매핑
52+
.sorted() // 정렬
53+
.collect(Collectors.toList()) // 리스트로 취합(아래 출력시 생략 가능)
54+
.forEach(System.out::println); // 메소드 참조로 출력
55+
56+
// ---
57+
58+
// 숫자 리스트
59+
List<Double> numbers1 = Arrays.asList(49.1, 25.5, 9.9);
60+
// 람다 표현식
61+
numbers1.stream() // 스트림 API
62+
.map(n -> Math.round(n)) // 반올림 처리
63+
.forEach(n -> System.out.println(n)); // 순회하며 출력
64+
65+
// ---
66+
67+
// 숫자 리스트
68+
List<Double> numbers2 = Arrays.asList(49.1, 25.5, 9.9);
69+
// 메소드 참조
70+
numbers2.stream() // 스트림 API
71+
.map(Math::round) // 반올림 처리
72+
.forEach(System.out::println); // 순회하며 출력
73+
}
74+
}

src/ch03/Array.kt

+6
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
package ch03
2+
3+
fun main() {
4+
val arr: Array<Int> = arrayOf(5, 1, 3)
5+
println(arr.max())
6+
}

src/ch03/JavaConditionExample.java

+27
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
package ch03;
2+
3+
public class JavaConditionExample {
4+
public String getTypeOfDayWithSwitchStatement(int dayOfWeek) {
5+
String typeOfDay;
6+
switch (dayOfWeek) {
7+
case 1:
8+
typeOfDay = "한 주의 시작";
9+
break;
10+
case 2:
11+
case 3:
12+
case 4:
13+
typeOfDay = "주중";
14+
break;
15+
case 5:
16+
typeOfDay = "한 주의 끝";
17+
break;
18+
case 6:
19+
case 7:
20+
typeOfDay = "주말";
21+
break;
22+
default:
23+
throw new IllegalArgumentException("잘못된 날: " + dayOfWeek);
24+
}
25+
return typeOfDay;
26+
}
27+
}

src/ch03/KotlinConditionExample.kt

+12
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
package ch03
2+
3+
fun getTypeOfDayWithSwitchStatement(dayOfWeek: Int): String {
4+
val typeOfDay: String = when (dayOfWeek) {
5+
1 -> "한 주의 시작"
6+
2, 3, 4 -> "주중"
7+
5 -> "한 주의 끝"
8+
6, 7 -> "주말"
9+
else -> throw IllegalArgumentException("잘못된 날: $dayOfWeek")
10+
}
11+
return typeOfDay
12+
}

0 commit comments

Comments
 (0)