티스토리에 저장했던 글을 옮겼습니다.
https://mrcocoball.tistory.com/87
https://mrcocoball.tistory.com/88
public class Member {
// field
private int memberId; // 회원 아이디
private String memberName; // 회원 이름
// constructor
public Member(int memberId, String memberName) {
this.memberId = memberId;
this.memberName = memberName;
}
// getter and setter
public int getMemberId() {
return memberId;
}
public void setMemberId(int memberId) {
this.memberId = memberId;
}
public String getMemberName() {
return memberName;
}
public void setMemberName(String memberName) {
this.memberName = memberName;
}
@Override
public String toString() { // toString 메소드 재정의
return memberName + " 학생의 아이디는 " + memberId + "입니다";
}
}
public class MemberArrayList {
// field
private ArrayList<Member> arrayList; // ArrayList 선언
// constructor
public MemberArrayList() {
arrayList = new ArrayList<Member>(); // Member로 선언한 ArrayList 생성
}
// method
public void addMember(Member member) { // Member 타입 member를 받아서
arrayList.add(member); // arrayList에 member 추가
}
public boolean removeMember(int memberId) { // memberId를 매개 변수로 삭제 여부를 반환
for (int i=0; i<arrayList.size(); i++) { // arrayList의 0번째 인덱스의 요소부터 반복
Member member = arrayList.get(i); // Member 타입의 변수 member = i번째의 arrayList의 요소
int tempId = member.getMemberId(); // member의 memberId를 tempId로 지정
if(tempId == memberId) { // tempId가 위에서 매개 값으로 받은 memberId와 같다면 = 동일한 멤버라면
arrayList.remove(i); // i번째의 요소를 삭제
return true; // true 반환하며 메소드 종료
}
}
System.out.println(memberId + "가 존재하지 않습니다"); // for문 돌렸으나 true가 반환되지 않았을 경우
return false; // false 반환하며 메소드 종료
}
public void showAllMember() {
for (Member member : arrayList) {
System.out.println(member);
}
System.out.println();
}
}
public class MemberArrayListTest {
public static void main(String[] args) {
MemberArrayList memberArrayList = new MemberArrayList(); // ArrayList 积己
Member memberChika = new Member(1001, "摹墨");
Member memberRico = new Member(1002, "府内");
Member memberYou = new Member(1003, "夸快");
Member memberYoshiko = new Member(1004, "夸矫内");
memberArrayList.addMember(memberChika);
memberArrayList.addMember(memberRico);
memberArrayList.addMember(memberYou);
memberArrayList.addMember(memberYoshiko);
memberArrayList.showAllMember();
memberArrayList.removeMember(memberYou.getMemberId());
memberArrayList.showAllMember();
}
}
boolean hasNext()
: 이후에 요소가 더 있는지를 체크하는 메소드, 요소가 있으면 true를 반환E next()
: 다음에 있는 요소를 반환public class MemberArrayListIterator {
// field
private ArrayList<Member> arrayList; // ArrayList 선언
// constructor
public MemberArrayListIterator() {
arrayList = new ArrayList<Member>(); // Member로 선언한 ArrayList 생성
}
// method
public void addMember(Member member) { // Member 타입 member를 받아서
arrayList.add(member); // arrayList에 member 추가
}
public boolean removeMember(int memberId) { // memberId를 매개 변수로 삭제 여부를 반환
Iterator<Member> ir = arrayList.iterator(); // member 대상으로 한 이터레이터 생성 (맨 처음 인덱스 바로 앞에 생성)
while(ir.hasNext()) { // ir.hasNext()가 true이면 반복 = ir 뒤에 요소가 더 있으면 계속 반복
Member member = ir.next(); // Member 타입의 변수 member = ir 뒤에 있는 요소 (요소를 순회)
int tempId = member.getMemberId(); // member의 memberId를 tempId로 지정
if(tempId == memberId) { // tempId가 위에서 매개 값으로 받은 memberId와 같다면 = 동일한 멤버라면
arrayList.remove(member); // arrayList에서 member를 삭제
return true; // true 반환
}
}
System.out.println(memberId + "가 존재하지 않습니다"); // while문 돌렸으나 true가 반환되지 않았을 경우
return false; // false 반환하며 메소드 종료
}
public void showAllMember() {
for (Member member : arrayList) {
System.out.println(member);
}
System.out.println();
}
}
public class MemberHashSet {
// field
private HashSet<Member> hashSet; // HashSet 선언
// constructor
public MemberHashSet() {
hashSet = new HashSet<Member>(); // Member로 선언한 HashSet 생성
}
// method
public void addMember(Member member) { // Member 타입 member를 받아서
hashSet.add(member); // hashSet에 member 추가
}
public boolean removeMember(int memberId) { // memberId를 매개 변수로 삭제 여부를 반환
Iterator<Member> ir = hashSet.iterator(); // hashSet에 대한 이터레이터 생성
while(ir.hasNext()) { // 이터레이터 순회 반복 (다음 요소가 존재할 때까지)
Member member = ir.next(); // 이터레이터 이동
int tempId = member.getMemberId();
if (tempId == memberId) {
hashSet.remove(member);
return true;
}
}
System.out.println(memberId + "가 존재하지 않습니다"); // while문 돌렸으나 true가 반환되지 않았을 경우
return false; // false 반환하며 메소드 종료
}
public void showAllMember(){
for(Member member : hashSet){
System.out.println(member);
}
System.out.println();
}
}
public class Member {
// field
private int memberId; // 회원 아이디
private String memberName; // 회원 이름
// constructor
public Member(int memberId, String memberName) {
this.memberId = memberId;
this.memberName = memberName;
}
// getter and setter
public int getMemberId() {
return memberId;
}
public void setMemberId(int memberId) {
this.memberId = memberId;
}
public String getMemberName() {
return memberName;
}
public void setMemberName(String memberName) {
this.memberName = memberName;
}
@Override
public String toString() { // toString 메소드 재정의
return memberName + " 학생의 아이디는 " + memberId + "입니다";
}
@Override // hashCode를 memberId로 반환하게끔 재정의
public int hashCode() {
return memberId;
}
@Override // 논리적 위치 = hashCode가 같을 경우 동일한 객체로 판정하게끔 재정의
public boolean equals(Object obj) {
if( obj instanceof Member){
Member member = (Member)obj;
if( this.memberId == member.memberId )
return true;
else
return false;
}
return false;
}
}
-> 인스턴스의 동일성 확보를 위해 hashCode() 및 equals() 메소드 재정의
public class MemberHashSetTest {
public static void main(String[] args) {
MemberHashSet memberHashSet = new MemberHashSet(); // HashSet 생성
Member memberChika = new Member(1001, "치카");
Member memberRico = new Member(1002, "리코");
Member memberYou = new Member(1003, "요우");
Member memberYoshiko = new Member(1004, "요시코");
memberHashSet.addMember(memberChika);
memberHashSet.addMember(memberRico);
memberHashSet.addMember(memberYou);
memberHashSet.addMember(memberYoshiko);
memberHashSet.showAllMember();
Member memberHanamaru = new Member(1004, "하나마루"); // ID가 동일하므로 동일 객체 판정 필요
memberHashSet.addMember(memberHanamaru);
memberHashSet.showAllMember();
}
}
public class MemberTreeSet {
// field
private TreeSet<Member> treeSet; // treeSet 선언
// constructor
public MemberTreeSet() {
treeSet = new TreeSet<Member>(); // Member로 선언한 treeSet 생성
}
// method
public void addMember(Member member) { // Member 타입 member를 받아서
treeSet.add(member); // treeSet에 member 추가
}
public boolean removeMember(int memberId) { // memberId를 매개 변수로 삭제 여부를 반환
Iterator<Member> ir = treeSet.iterator(); // treeSet에 대한 이터레이터 생성
while(ir.hasNext()) { // 이터레이터 순회 반복 (다음 요소가 존재할 때까지)
Member member = ir.next(); // 이터레이터 이동
int tempId = member.getMemberId();
if (tempId == memberId) {
treeSet.remove(member);
return true;
}
}
System.out.println(memberId + "가 존재하지 않습니다"); // while문 돌렸으나 true가 반환되지 않았을 경우
return false; // false 반환하며 메소드 종료
}
public void showAllMember(){
for(Member member : treeSet){
System.out.println(member);
}
System.out.println();
}
}
public class MemberTreeSetTest {
public static void main(String[] args) {
MemberTreeSet memberTreeSet = new MemberTreeSet(); // TreeSet 생성
Member memberHanamaru = new Member(1005, "하나마루"); // ID가 동일하므로 동일 객체 판정 필요
Member memberChika = new Member(1001, "치카");
Member memberRico = new Member(1002, "리코");
Member memberYou = new Member(1003, "요우");
Member memberYoshiko = new Member(1004, "요시코");
memberTreeSet.addMember(memberChika);
memberTreeSet.addMember(memberRico);
memberTreeSet.addMember(memberYou);
memberTreeSet.addMember(memberYoshiko);
memberTreeSet.addMember(memberHanamaru);
memberTreeSet.showAllMember();
}
}
public class Member implements Comparable<Member> {
// field
private int memberId; // 회원 아이디
private String memberName; // 회원 이름
// constructor
public Member(int memberId, String memberName) {
this.memberId = memberId;
this.memberName = memberName;
}
// getter and setter
public int getMemberId() {
return memberId;
}
public void setMemberId(int memberId) {
this.memberId = memberId;
}
public String getMemberName() {
return memberName;
}
public void setMemberName(String memberName) {
this.memberName = memberName;
}
@Override
public String toString() { // toString 메소드 재정의
return memberName + " 학생의 아이디는 " + memberId + "입니다";
}
@Override // hashCode를 memberId로 반환하게끔 재정의
public int hashCode() {
return memberId;
}
@Override // 논리적 위치 = hashCode가 같을 경우 동일한 객체로 판정하게끔 재정의
public boolean equals(Object obj) {
if( obj instanceof Member){
Member member = (Member)obj;
if( this.memberId == member.memberId )
return true;
else
return false;
}
return false;
}
@Override
public int compareTo(Member member) { // 반환값이 int, 본인과 비교값을 비교, 본인이 클 경우 양수, 같으면 0, 작으면 음수
// return (this.memberId - member.memberId); // 오름차순
return (this.memberId - member.memberId) * (-1); // 내림차순
}
}
public class MemberTreeSetTest {
public static void main(String[] args) {
MemberTreeSet memberTreeSet = new MemberTreeSet(); // TreeSet 생성
Member memberHanamaru = new Member(1005, "하나마루"); // ID가 동일하므로 동일 객체 판정 필요
Member memberChika = new Member(1001, "치카");
Member memberRico = new Member(1002, "리코");
Member memberYou = new Member(1003, "요우");
Member memberYoshiko = new Member(1004, "요시코");
memberTreeSet.addMember(memberChika);
memberTreeSet.addMember(memberRico);
memberTreeSet.addMember(memberYou);
memberTreeSet.addMember(memberYoshiko);
memberTreeSet.addMember(memberHanamaru);
memberTreeSet.showAllMember();
}
}
class MyCompare implements Comparator<String> {
@Override
public int compare(String s1, String s2) {
return (s1.compareTo(s2)) * -1; // s1 - s2 값 * -1 = 내림차순으로 정렬
}
}
public class ComparatorTest {
public static void main(String[] args) {
TreeSet <String>set = new TreeSet<String>(new MyCompare());
set.add("가오가이가");
set.add("나오나이나");
set.add("다오다이다");
System.out.println(set);
}
}
public class MemberHashMap {
// field
private HashMap<Integer, Member> hashMap; // hashMap 선언
// constructor
public MemberHashMap() {
hashMap = new HashMap<>(); // Member로 선언한 hashMap 생성
}
// method
public void addMember(Member member) { // Member 타입 member를 받아서
hashMap.put(member.getMemberId(), member); // hashMap에 member의 memberId와(key) member(value) 추가
}
public boolean removeMember(int memberId) { // memberId를 매개 변수로 삭제 여부를 반환
if (hashMap.containsKey(memberId)) { // hashMap의 키에 memberId가 있을 경우
hashMap.remove(memberId); // 해당 key-value를 지워버림
}
System.out.println(memberId + "가 존재하지 않습니다"); // while문 돌렸으나 true가 반환되지 않았을 경우
return false; // false 반환하며 메소드 종료
}
public void showAllMember(){
Iterator<Integer> ir = hashMap.keySet().iterator(); // hashMap의 keySet 한 것에 이터레이터 생성
while(ir.hasNext()) { // 이터레이터 순회
int key = ir.next(); // 키 추출
Member member = hashMap.get(key); // 키에 대한 값 추출하여 member에 저장
System.out.println(member);
}
System.out.println();
}
}
public class MemberHashMapTest {
public static void main(String[] args) {
MemberHashMap memberHashMap = new MemberHashMap(); // HashMap 생성
Member memberHanamaru = new Member(1005, "하나마루"); // ID가 동일하므로 동일 객체 판정 필요
Member memberChika = new Member(1001, "치카");
Member memberRico = new Member(1002, "리코");
Member memberYou = new Member(1003, "요우");
Member memberYoshiko = new Member(1004, "요시코");
memberHashMap.addMember(memberChika);
memberHashMap.addMember(memberRico);
memberHashMap.addMember(memberYou);
memberHashMap.addMember(memberYoshiko);
memberHashMap.addMember(memberHanamaru);
memberHashMap.showAllMember();
HashMap<Integer, String> hashMap = new HashMap<Integer, String>();
hashMap.put(1006, "루비");
hashMap.put(1007, "다이아");
System.out.println(hashMap);
}
}