리스트
어제 ,엊그제 배운 배열은 데이터의 크기가 커지거나 배열 중간에 데이터를 넣어야 할때는 수동으로 작업을 해줘야 하는 불편함이 있는데 , 즉 데이터의 성격이 유동적일땐 사용하기 좋지 않다
그래서 그 불편함을 줄이기 위하여 리스트를 사용한다
리스트 사용방법
* 리스트도 클래스 이다
* 리스트는 배열과 다르게 자동적으로 늘어난다
* <> 꺽세 안쪽엔 내가 사용할 데이터형을 넣어준다 (클래스형을 준다 : int : Integer 등등)
어레이리스트도 new 해서 인스턴스 해주기 때문에 안쪽에 사용할 수있는 메소드가 있다
add() : 값을 추가합니다.
get() : 값을 가져옵니다.
size() : 크기 값을 알 수 있습니다.
&안드로이드 실습& 이름과 나이를 입력 받아 어레이 리스트로 저장출력 하는 프로그램을 만들것이다 .
일단 메인 엑티비티 클래스 한개 , 학교클래스 한개 , 학생 클래스 한개 씩 해서 총 3개의 클래스를 만들어 줬다.
<xml 은 생략 하고 코드 작성만>
Student 클래스
package com.example.selfcheck;
public class Student {
// 나이와 이름을 받을 변수
int age;
String name;
// 생성자 나이와 이름을 매개변수로 받아서 초기화시킴
public Student(int age, String name) {
this.age = age;
this.name = name;
}
//나이와 이름 getter 와 setter
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
*작성의 팁 : 오른쪽 마우스 클릭후 Generate 클릭후 Constconstructor(생성자) 생성 가능 , getter and setter 도 가능
Scool 클래스
실제로 동작하는 것들을 스쿨 클래스에 담아서 사용 하였다
package com.example.selfcheck;
import java.util.ArrayList;
public class School {
// 학교 이름을 받을 변수
String name ;
//스튜던트를 담을수 있는 어레이 리스트 만듬
ArrayList<Student> students= new ArrayList<Student>();
//생성자 학교이름을 매게변수로 받아서 클래스내부에 설정
public School(String name) {
this.name = name;
}
//name getter
public String getName()
{
return name;
}
//name setter
public void setName(String name) {
this.name = name;
}
// student를 어레이 리스트(students)에 추가하는 메소드
public void addItem(Student student) {
students.add(student);
}
//어레이 리스트의 크기값을 확인 하는 메소드 *return 값이 있어서 int 로 설정
public int size(){
return students.size();
}
//실제 생성된것들을 출력해주는 String 메소드
public String toSting(){
String output = ""; // 쓰레기 값 들어 가는거 방지
// output변수에 학교 이름을 출력하는 것 \n 으로 띄워줌
output = "학교이름 : " + name +"\n";
for(int i = 0 ; i<students.size(); i++){ //리스트의 크기만큼 포문으로 돌림
// output에 출력할 메시지를 저장후 리턴 해준다
output += "학생#"+i+ ": " + students.get(i).getName()+ "," + students.get(i).getAge() +"\n";
}
return output;
}
}
Main클래스
package com.example.selfcheck;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
import java.util.ArrayList;
public class MainActivity extends AppCompatActivity {
EditText editText1 , editText2 ;
TextView textView2, textView1;
School school ; // 스쿨 클래스 만들어 줌
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
editText1 = findViewById(R.id.editText);
editText2 = findViewById(R.id.editText2);
textView1 = findViewById(R.id.textView);
textView2 = findViewById(R.id.textView2);
//스쿨 클래스 인스턴스화 함
school = new School("마법학교");
}
public void onAdd(View view) {
//이름과 나이 받아서 변수에 넣어준다
String name = editText1.getText().toString();
int age = Integer.parseInt(editText2.getText().toString());
//위 에디트 텍스트에 받은 값들을 스튜던트 클래스인스턴스화 하면서 같이 넘겨 주었다
Student student = new Student(age , name);
// school.addItem메소드에 위에 인스턴스한 student를 참조시켜준다
school.addItem(student);
//토스트 메시지
Toast.makeText(getApplicationContext(), "학생객체가 리스트에 추가됨" +name +"학생의 나이" + age ,Toast.LENGTH_LONG).show();
//텍스트뷰에 school.size메소드를 입력해준다
textView1.setText("추가된 학생 "+school.size());
}
public void onList(View view) {
//텍스트뷰에 school.toString 메소드를 입력해준다
textView2.setText(school.toSting());
}
}
스쿨, 스튜던트 클래스를 만들어주고 어레이리스트를 이용해 학생객체를 만들어 입출력 해주었다
주석을 잘 보면 이해가 쉽다
싱글톤
한번에 하나의 객체만 가질수 있는 클래스 이다
싱글톤 사용방법
* 생성자를 private 로 만들어준다
* 외부에서 호출할 수 있는 getInstance()선언 꼭 이렇게 선언해야한다
*정적 필드에서 참조하는 자신의 객체 리턴
package SingleTon;
public class Master {
//유일하게 생성한 인스턴스 !
private static Master master = new Master();
private String name = "관리자";
//생성자를 private 으로 만들어줌
private Master() {}
//외부에서 참조할 수 있는 public 메서드
public static Master getInstance() {
return master;
}
//이름
public String getName() {
return name;
}
}
예를 들면 어떤 회사의 직원을 객체지향으로 구현 한다생각하면 직원은 여러개 생성해야 하지만 회사는 하나만 생성해야한다 이럴때 사용하는것이 싱글톤 패턴이다
이제 회사원 객체를 만들어 보자
package SingleTon;
public class Worker_2 {
private String name = "작업자2";
public void display() {
System.out.println(Master.getInstance().getName()+"이(가) " +name +"에게 일시킨다");
}
}
회사원 객채를 만들었다
그리고 실행 해보자!
package SingleTon;
public class SingleTon_Ex {
public static void main(String[] args) {
Worker_1 worker1 = new Worker_1();
Worker_2 worker2 = new Worker_2();
worker1.display();
worker2.display();
}
}
이런식으로 단 하나의 인스턴스를 가져야할때 사용하는 것이 싱글톤 패턴이다!
공부하는 중간에 시작해서 초반내용은 없지만 시간나면 올리도록하자옳옳옳
(21-03-10 복습 1회)
'아옳옳의 코딩공부 > 아옳옳 자바코딩공부' 카테고리의 다른 글
2021-02-24 자바공부 (상속4 상속을 사용한 안드로이드 작업) (0) | 2021.02.24 |
---|---|
2021-02-23 자바공부 (상속3 이해 , 상속의 사용목적) (0) | 2021.02.23 |
2021-02-20 자바공부 (시스템 입출력 ,배열 , 열거타입) (0) | 2021.02.20 |
2021-02-19 자바공부 (상속2 오버라이딩 ,instanceof) (0) | 2021.02.19 |
2021-02-19 자바공부 (상속1 , 라이브러리 ) (0) | 2021.02.19 |