기존 배열 코드를 리스트로 변경!
//From 배열
private Article[] articles;
//To 리스트
private List<Article> articles;
//Restart
public class App {
//originCode : private Article[] articles;
//originCode2 : private ArrayList<Article> articles; => 뒤에 new ArrayList가 있어서 Array 생략 가능
private List<Article> articles;
//이제 아래 두개 코드 삭제 가능
private int lastArticleId;
//private int articlesSize;
public App() {
//originCode : articles = new Article[32];
//originCode2 : new ArrayList<Article>(); => 앞에 <Article> 이 언급되어 있어서 뒤에 는 생략 가능.
articles = new ArrayList<>();
//삭제~
lastArticleId = 0;
//articlesSize = 0;
전체코드에 배열을 리스트로 교체 시도한 코드
더보기
package com.sbs.example.easytextboard;
+import java.util.ArrayList;
+import java.util.List;
import java.util.Scanner;
public class App {
- private Article[] articles;
+ private List<Article> articles;
private int lastArticleId;
- private int articlesSize;
public App() {
- articles = new Article[32];
lastArticleId = 0;
- articlesSize = 0;
+ articles = new ArrayList<>();
for (int i = 0; i < 32; i++) {
add("제목" + (i + 1), "내용" + (i + 1));
}
}
- private int articlesSize() {
- return articlesSize;
- }
-
private Article getArticle(int id) {
int index = getIndexById(id);
if (index == -1) {
return null;
}
- return articles[index];
- }
-
- private boolean isArticlesFull() {
- return articlesSize == articles.length;
+ return articles.get(index);
}
private int add(String title, String body) {
// 만약에 현재 꽉 차 있다면
// 새 업체과 계약한다.
- if (isArticlesFull()) {
- System.out.printf("== 배열 사이즈 증가(%d => %d) ==\n", articles.length, articles.length * 2);
-
- Article[] newArticles = new Article[articles.length * 2];
-
- for (int i = 0; i < articles.length; i++) {
- newArticles[i] = articles[i];
- }
-
- articles = newArticles;
- }
Article article = new Article();
article.id = lastArticleId + 1;
article.title = title;
article.body = body;
-
- articles[articlesSize] = article;
-
- articlesSize++;
+ articles.add(article);
lastArticleId = article.id;
return article.id;
@@ -72,16 +49,12 @@ private void remove(int id) {
return;
}
- for (int i = index + 1; i < articlesSize(); i++) {
- articles[i - 1] = articles[i];
- }
-
- articlesSize--;
+ articles.remove(index);
}
private int getIndexById(int id) {
- for (int i = 0; i < articlesSize(); i++) {
- if (articles[i].id == id) {
+ for (int i = 0; i < articles.size(); i++) {
+ if (articles.get(i).id == id) {
return i;
}
}
@@ -139,42 +112,23 @@ public void run() {
System.out.println("== 게시물 검색 ==");
- int searchResultArticlesLen = 0;
+ List<Article> searchResultArticles = new ArrayList<>();
- // 검색된 결과의 수를 먼저 구하기
- for (Article article : articles) {
- if (article == null) {
- break;
- }
-
- if (article.title.contains(searchKeyword)) {
- searchResultArticlesLen++;
+ searchResultArticles.add(article);
}
}
- Article[] searchResultArticles = new Article[searchResultArticlesLen];
-
- int searchResultArticlesIndex = 0;
- for (Article article : articles) {
- if (article == null) {
- break;
- }
-
- if (article.title.contains(searchKeyword)) {
- searchResultArticles[searchResultArticlesIndex] = article;
- searchResultArticlesIndex++;
- }
- }
-
- if (searchResultArticles.length == 0) {
+ if (searchResultArticles.size() == 0) {
System.out.println("검색결과가 존재하지 않습니다.");
continue;
}
System.out.println("번호 / 제목");
int itemsInAPage = 10;
- int startPos = searchResultArticles.length - 1;
+ int startPos = searchResultArticles.size() - 1;
startPos -= (page - 1) * itemsInAPage;
int endPos = startPos - (itemsInAPage - 1);
@@ -188,7 +142,7 @@ public void run() {
}
for (int i = startPos; i >= endPos; i--) {
- Article article = searchResultArticles[i];
+ Article article = searchResultArticles.get(i);
System.out.printf("%d / %s\n", article.id, article.title);
}
@@ -201,15 +155,15 @@ public void run() {
System.out.println("== 게시물 리스트 ==");
- if (articlesSize() == 0) {
+ if (articles.size() == 0) {
System.out.println("게시물이 존재하지 않습니다.");
continue;
}
System.out.println("번호 / 제목");
int itemsInAPage = 10;
- int startPos = articlesSize() - 1;
+ int startPos = articles.size() - 1;
startPos -= (page - 1) * itemsInAPage;
int endPos = startPos - (itemsInAPage - 1);
@@ -223,21 +177,20 @@ public void run() {
}
for (int i = startPos; i >= endPos; i--) {
- Article article = articles[i];
+ Article article = articles.get(i);
System.out.printf("%d / %s\n", article.id, article.title);
}
} else if (command.startsWith("article detail ")) {
int inputedId = 0;
try {
inputedId = Integer.parseInt(command.split(" ")[2]);
- }
- catch ( NumberFormatException e ) {
+ } catch (NumberFormatException e) {
System.out.println("게시물 번호를 양의 정수로 입력해주세요.");
continue;
}
System.out.println("== 게시물 상세 ==");
Article article = getArticle(inputedId);
*전체적인 일상은 노션을 통해 작성하고 있습니다.
'Java' 카테고리의 다른 글
#044 객체지향 문법 및 구성 요약 (0) | 2020.12.10 |
---|---|
#043 클래스와 메서드로 할 수 있는 것들 개념 요약 (0) | 2020.12.10 |
#041 상속과 객체지향의 문법 (0) | 2020.12.10 |
#040 배열 속에서 짝수 찾는 법 (0) | 2020.12.10 |
#039 @Override + string toString / 반복문 팁 (0) | 2020.12.10 |