My footsteps
Stream Api + 컬렉션 / 3 본문
< 컬렉션 + 제네릭 아침복습 >
- 컬렉션은 제네릭으로 만든다!!
package study;
import java.util.Date;
public class Post {
//게시글
private int view;
private Date regdate;
private String name;
private String id;
private String content;
public Post() {
}
public Post(int view, Date regdate, String name, String id, String content) {
super();
this.view = view;
this.regdate = regdate;
this.name = name;
this.id = id;
this.content = content;
}
@Override
public String toString() {
return "Post [view=" + view + ", regdate=" + regdate + ", name=" + name + ", id=" + id + ", content=" + content
+ ", getView()=" + getView() + ", getRegdate()=" + getRegdate() + ", getName()=" + getName()
+ ", getId()=" + getId() + ", getContent()=" + getContent() + ", getClass()=" + getClass()
+ ", hashCode()=" + hashCode() + ", toString()=" + super.toString() + "]";
}
public int getView() {
return view;
}
public void setView(int view) {
this.view = view;
}
public Date getRegdate() {
return regdate;
}
public void setRegdate(Date regdate) {
this.regdate = regdate;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}
}
package study;
import java.util.ArrayList;
import java.util.List;
public class Program {
public static void main(String[] args) {
List<Post> list = new ArrayList<>();
// list.add(new Post());
//add하면서 post 객체를 생성해줄수도 있다
Post post = new Post();
//post 객체 생성해서 접근해주고
post.setContent("안녕하세요");
//setter로 원하는 컨텐츠 넣어주고
list.add(post);
//컨텐츠가 들어간 post 객체를 list 컬렉션에 푸쉬해줌
System.out.println(post);
// System.out.println(list.get(0));
}
}
< 스트림 API >
- 인젝션(Injection) : 주입하다
https://7942yongdae.tistory.com/177
Java - 의존성 주입(Dependency Injection)이란?
의존성 주입(Dependency Injection)은 객체의 생성과 사용 관심사를 분리하는 프로그래밍 설계 방식입니다. 자바 같은 경우 추상화 도구(인터페이스, 추상 클래스)를 사용하면 손쉽게 의존성 주입하는
7942yongdae.tistory.com
public void load() {
//Loder 인터페이스 정의 > 인터페이스 파일 만들어라
//상단에 인젝션이 가능하도록 세터를 추가 > private Loader loader; 하고 인터페이스 파일에 void load();
loader.load();
}
//매니저에 로더를 익명객체로 생성해서 세터에 인젝션 해주세요
manager.setLoader(new Loader() {
public int load(Object[] datas) {
int result = 0;
try(FileInputStream fis = new FileInputStream("res/data.csv");
Scanner scan = new Scanner(fis);
) {
String line = scan.nextLine();
String[] tokens = line.split(" ");
int size= tokens.length;
for(int i =0;i<size;i++) {
datas[i]=tokens[i];
}
result = size;
} catch (FileNotFoundException e) {
e.printStackTrace();
}catch (IOException e) {
e.printStackTrace();
}
return result;
}
});
-----------------------------------------------
public interface Loader {
int load(Object[] datas);
}
- 인터페이스는 물려주는게 없기 때문에 다중상속이 가능하다
package ex8.inter;
public interface Storage extends Saver,Loader{
default void print() {
System.err.println("난 공통이햐");
}
}
- 원래는 인터페이스에서 구현을 하면 안되는데(이러면 추상화클래스랑 다를바가 없어서.) 구현을 할일이 있다면 default를 붙여준다
- static 메서드도 인터페이스 안에서 정의할수 있다(일반함수도 가능)
- 일반적인 클래스와 다른것은 인터페이스는 멤버변수가 존재할수 없다.
- 밑에 코드처럼 static 선언 가능
package ex8.inter;
public interface Storage extends Saver,Loader{
static int x=0;
default void print() {
System.err.println("난 공통이햐");
}
}
package ex8.inter;
public interface Storage extends Saver,Loader{
static int x=0;
default void print() {
System.err.println("난 공통이햐");
}
static int getX() {
return x;
}
}
//메인메서드에서 호출가능
//System.out.println(Storage.getX());
- 인터페이스는 클래스가 아니다!!!!!!! 클래스처럼 쓰지 말기!!! 그저 약속을 담는 그릇일 뿐이다
< 컬렉션 >
- 코드가 글씨체가 눕혀져 있으면 구현이 완료되지 않은 애들임
- list 객체 만들어주세요~ 하면 구현체인 arraylist도 만들어야함
List<Integer> list1 = new ArrayList<>();
list1.add(3);
list1.add(3);
list1.add(3);
list1.add(3);
System.out.println("list length : "+list1.size());//4
Set<Integer> set = new HashSet<>();
set.add(3);
set.add(3);
set.add(3);
set.add(3);
System.out.println("set length : "+set.size());//1
Map<String, Object> notice = new HashMap<>();
//string:키 object:값
notice.put("id", 1);
notice.put("title", "컬렉션 어러벼");
notice.put("hit", 12);
System.out.println("map length : "+notice.size());//3
//map은 일시적으로 사용하는 데이터를 임시저장할때 씀
- set는 식별자가 없어서 값을 지정해서 꺼내는게 불가능하다
- list랑 map은 값 꺼내는거 쌉가능한.
Map<String, Object> notice = new HashMap<>();
//string:키 object:값
notice.put("id", 1);
notice.put("title", "컬렉션 어려버");
notice.put("hit", 12);
System.out.println("map length : "+notice.size());//3
System.out.println("map get : "+notice.get("title"));//컬렉션 어러벼가 나옴
- 열거기능 : 일괄적으로 데이터를 꺼내는 기능(에니머레이션,이터레이터)
- 이터레이터 : 값을 저장해주진 않고 , 반복적으로 값을 꺼내기 위한 인덱스 객체
Iterator<Integer> listIt = list1.iterator();
//이걸 추가해줌으로써 다음줄을 호출할수 있게 된다
'국비수업 > 수업정리' 카테고리의 다른 글
JSP (0) | 2023.05.22 |
---|---|
쓰레드 (0) | 2023.05.19 |
인터페이스 / 다형성 / 익명클래스 (0) | 2023.05.17 |
컬렉션 / 2 + 추상화 (0) | 2023.05.16 |
예외 처리 / 컬렉션 (0) | 2023.05.15 |