Map
key - value 값 속성
key 는 중복허용 X
value 는 중복허용 O
유일한 값을 관리할 때 사용 (회원 아이디)
그렇기 때문에 이걸 이용해 로그인 프로그래밍을 해볼 것이다.
key 값과 value 값 일치하는지 알아보기 - 로그인 프로그래밍
package come.map;
import java.util.HashMap;
import java.util.Scanner;
public class HashMapTest {
public static void main(String[] args) {
HashMap map = new HashMap();
// map.put(key, value);
map.put("myId", "1234");
map.put("asdf", "1111");
map.put("asdf", "1234");
// System.out.println(map); // {myId=1234, asdf=1234}
// 중복 시 마지막 값을 사용한다
// System.out.println(map.get("myId")); // key를 이용해서 value를 반환한다
// 로그인 기능 만들기
// 아이디와 비밀번호 받기
Scanner sc = new Scanner(System.in);
while (true) {
System.out.println("id와 password를 입력하세요");
System.out.print("id >> ");
String id = sc.nextLine();
System.out.print("password >> ");
String passsword = sc.nextLine();
System.out.println();
// 키 값이 일치 체크
if (!map.containsKey(id)) {
// 로그인 실패 시
System.out.println("입력하신 id는 존재하지 않습니다.");
continue;
} else {
// 아이디 일치 시
// 비밀번호가 일치하지 않을 떄
if (!(map.get(id)).equals(passsword)) {
System.out.println("비밀번호가 일치하지 않습니다.");
} else {
System.out.println("id와 password가 일치합니다.");
break;
}
}
}
}
}
Iterator, key 값 가지고 오기
package come.map;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
public class HashMapTest2 {
public static void main(String[] args) {
Map map = new HashMap();
map.put("김자바", new Integer(90));
map.put("안자바", new Integer(100));
map.put("이파리", new Integer(90));
map.put("이파리", new Integer(40));
map.put("노드주니어", new Integer(100));
// key
// value
// key, value 동시에 가지고 올 수 있다.
// 반복자패턴 사용 = Iterator 를 사용
// map은 Iterator 를 바로 사용할 수 없음, Set 이용
Set set;
// key
// set = map.keySet();
// System.out.println(set); // [안자바, 김자바, 이파리, 노드주니어]
// 값이 순서대로 나오지 않는다.
// Iterator를 이용해 키값을 이용해 value 값 가지고 오기
Iterator it = map.keySet().iterator();
while(it.hasNext()) {
String key = (String) it.next();
System.out.println("key : " + key + " , " + map.get(key));
// key 는 중복허용이 안되기 때문에 중복된 이름은 나오지 않음.
// 중복된 값들 중 마지막 값이 나옴
}
key, value 을 동시에 읽어오기 위한 map의 인터페이스
public interface Map<K, y> {
interface Entry<k, y> {
K getKey();
V getValue();
}
}
key, value 을 동시에 읽어오기
package come.map;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
public class HashMapTest2 {
public static void main(String[] args) {
Map map = new HashMap();
map.put("김자바", new Integer(90));
map.put("안자바", new Integer(100));
map.put("이파리", new Integer(90));
map.put("이파리", new Integer(40));
map.put("노드주니어", new Integer(100));
// key
// value
// key, value 동시에 가지고 올 수 있다.
// 반복자패턴 사용 = Iterator 를 사용
// map은 Iterator 를 바로 사용할 수 없음, Set 이용
Set set;
// key, value 을 동시에 읽어오기
// Map 인터페이스 안에 인터페이스가 정의되어 있다. -> 내부인터페이스라고 함
// K getKey(); , V getValue(); 를 이용해서 key와 value를 읽어올 것.
Iterator it = map.entrySet().iterator();
while (it.hasNext()) {
Map.Entry e = (Map.Entry)it.next(); // 내부 인터페이스 Map.Entry를 반환
// Entry 안에 getKey 와 getValue가 있음.
System.out.println("이름 : " + e.getKey() + ", 점수 : " + e.getValue());
}
}
}
갑자기 수업하다 자바에서 라이브러리를 인식 못하는 상황!!!! 수업중에 이런일이 생기다니 정말 울고 싶었다..
이런 오류가 발생..
강사님께 여쭤보니 라이브러리 인식 문제라고 하셨다. 수업을 계속 해야했기 때문에.. 일단 다른 프로젝트를 만들어 파일을 실행했다.
일반적으로 Build path 에 들어가서 라이브러리를 관리해주는 식으로 문제를 해결하던데 난 그것도 안됐다.
코드에도 어디에도 아무 문제가 없는데 왜 저런 오류가 뜨는지 모르겠다.
결국 수업은 따라가야하니.. 새로운 프로젝트를 만들어서 파일을 옮겼다. 이것도 해결이라고 할 수 있을까 ㅠ
파일과 연결해서 Key 와 Value 값 가지고 오기
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Properties;
import java.util.Set;
public class PropertiesTest2 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Properties prop = new Properties();
String inputFile = "src/input.txt";
try {
prop.load(new FileInputStream(inputFile));
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
System.out.println(prop);
String name = prop.getProperty("name");
String[] data = prop.getProperty("data").split(",");
System.out.println(Arrays.toString(data));
int max = 0;
int min = 0;
int sum = 0;
double avg = 0;
int[] nums = new int[data.length];
for (int i = 0; i < nums.length; i++) {
nums[i] = Integer.parseInt(data[i]);
}
for (int i = 0; i < nums.length; i++) {
int sValue = nums[i]; // 기준값
if (i == 0) max = min = sValue;
if (max < sValue) {
max = sValue;
} else if (min > sValue){
min = sValue;
}
sum += sValue;
}
avg = (sum * 100.0 / nums.length) / 100;
System.out.println("이름 :" + name);
System.out.println("최대값 :" + max);
System.out.println("최소값 :" + min);
System.out.println("합계 :" + sum);
System.out.println("평균 :" + avg);
}
}
input.txt 파일의 내용
# 이름과 점수입니다.
name = hong gill dong
data = 7,23,56,75
배열을 정렬하기
package come.set;
import lombok.AllArgsConstructor;
import lombok.ToString;
@AllArgsConstructor
@ToString
public class Student implements Comparable {
String name;
int ban;
int no;
int kor, eng, math;
int getTotal() {
return kor + eng + math;
}
float getAverage() {
return (int) ((getTotal() / 3f) * 10 + 0.5) / 10f;
}
// 학생의 이름에 따라 정렬
@Override
public int compareTo(Object o) { // Object o -> Student
if (o instanceof Student) {
Student other = (Student) o; // 값으로 가지고 와서 사용할 수 있다.
return this.name.compareTo(other.name); // 오름차순
}
// TODO Auto-generated method stub
return -1;
}
}
배열의 정보가 들어있는 main class
package come.set;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Iterator;
import java.util.List;
public class StudentTest {
public static void main(String[] args) {
ArrayList list = new ArrayList();
list.add(new Student("홍길동", 1, 21, 100, 98, 78));
list.add(new Student("남궁성", 2, 3, 90, 100, 100));
list.add(new Student("강자바", 3, 10, 99, 59, 84));
list.add(new Student("콩자반", 9, 7, 84, 65, 96));
list.add(new Student("고투홈", 2, 1, 65, 89, 55));
// System.out.println(list);
Collections.sort(list);
// System.out.println(list);
Iterator it = list.iterator();
while (it.hasNext()) {
Student s = (Student) it.next();
System.out.println(s.toString());
}
}
}
collectionProject0523 < come.builder 롬복에 대해 알아봄
package come.builder;
import lombok.Builder;
import lombok.Data;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.RequiredArgsConstructor;
import lombok.Setter;
// 롬북사용법
//@Getter
//@Setter
////@NoArgsConstructor
//@RequiredArgsConstructor
@Data // 모두 포함
@Builder
public class Member {
private String id;
private String name;
private final String age;
}
package come.builder;
import lombok.Builder;
import lombok.Data;
@Data
@Builder
public class UserInforLombok {
private String firstName;
private String secondName;
@Builder.Default
private int age = 30;
public String getUserinfo() {
return String.format("firstName: %s, secondName: %s, age: %s", firstName, secondName, age);
}
}
package come.builder;
import lombok.Builder;
public class UserInforLombokTest {
public static void main(String[] args) {
UserInforLombok userInforLombok = UserInforLombok.builder()
.firstName("lombok 적용")
.secondName("객체생성")
.build();
System.out.println(userInforLombok.getUserinfo()); // firstName: lombok 적용, secondName: 객체생성, age: 0
// 빌더패턴을 사용하면 명시적 초기화가 먹히지 않는다.
// 무조건 0을 기본값으로 보냄
// 명시적인 값을 꼭 사용해야 한다면 해당 값 위에
// @Builder.Default 를 써야한다.
}
}
내일은 피그마를 활용한 디자인 시험..!
프로토타입, 인터럭션 동작 해야함.
이용약관, 로그인 성공 등등 화살표
'2024_UIUX 국비 TIL' 카테고리의 다른 글
UIUX _국비과정 0527 [스레드] (1) | 2024.06.24 |
---|---|
UIUX _국비과정 0524 [JAVA _ Generic, 스레드의 개념] (0) | 2024.06.12 |
UIUX _국비과정 0522 [스택과 큐, 정렬, Set] (1) | 2024.06.11 |
UIUX _국비과정 0521 [피그마 마무리, 자바2] (1) | 2024.06.11 |
UIUX _국비과정 0517~0520 [피그마] (0) | 2024.06.11 |