6. contains(Object) : boolean 해당 객체를 포함한지 true/false반환
7. indexOf(Object o): int 해당 객체의 인덱스번호 반환 해당 값이 없을경우 -1 반환
8. equals(Object o):boolean 지정된 객체와 목록이 같은지 비교
9. clear() clear():void
10. isEmpty():boolean
package MVC.controller;
import java.util.ArrayList;
import MVC.model.vo.pModelVo05;
public class pController05 {
// List
// ArrayList
public void pList() {
ArrayList<pModelVo05> al = new ArrayList<>();
// e :제네릭에 지정 받은 타입을 그대로 쓰겠다.
// o : 안에 뭘 받아올지 모르니까 다 받을 수 있게 오브젝트로 쓰겠다. 엘레멘트로 타입을 지정할 필요가 없다
// 1-1. // add(E e):boolean
al.add(new pModelVo05("과일",5000));
al.add(new pModelVo05("스낵 ",1500));
System.out.println(al.add(new pModelVo05("껌",1500))); // true
System.out.println(al); // [과일[5000원], 과자[1500원]]
// 1-2. add(int index, E element):void
al.add(3, new pModelVo05("쌀",50000)); // 마지막3번이 아닌 더 뒤4로 하니 길이 에러
System.out.println(al); // [과일[5000원], 스낵 [1500원], 껌[1500원], 쌀[50000원]]
// System.out.println(al.add(3, new pModelVo05("믈",500))); // void 즉 없는 값을 출력하라해서 에러
// 2. size()
System.out.println(al.size()); // 4
al.add(new pModelVo05("계란",6000)); // 자동 길이추가
System.out.println(al); // [과일[5000원], 스낵 [1500원], 껌[1500원], 쌀[50000원], 계란[6000원]]
// 3.remove()
// remove(int index):E
// remove(Object o):boolean
System.out.println("=====remove=====");
al.remove(0); // 과일 삭제
System.out.println(al.remove(0)); // 스낵 [1500원] // 스낵삭제
System.out.println(al); // 껌[1500원], 쌀[50000원], 계란[6000원]]
al.remove(new pModelVo05("껌",1500)); // 작동x. 모델에서 오버라이딩 안했기 때문
System.out.println(al); // [껌[1500원], 쌀[50000원], 계란[6000원]]
// 모델 오버라이딩 후 // [쌀[50000원], 계란[6000원]]
System.out.println(al.remove(new pModelVo05("쌀",50000))); // true // 쌀 삭제
pModelVo05 pm = new pModelVo05("계란",6000);
System.out.println(al.remove(pm)); // true
System.out.println(al); // []
al.add(new pModelVo05("물",500));
al.add(new pModelVo05("요거트",1000));
System.out.println(al); // [물[500원], 요거트[1000원]]
// 4. set()
// set(int index, E e):E
// == replace 대체
System.out.println(al.set(1, new pModelVo05("커피",1500))); // 요거트[1000원] // 바꿔진 엘리먼트값 출력
al.set(1, new pModelVo05("커피",1500));
System.out.println(al); // [물[500원], 커피[1500원]]
// 5. get()
// get(int index):E
System.out.println(al.get(1)); // 커피[1500원]
System.out.println(al.get(0)); // 물[500원]
// 6. contains(Object) : boolean
// 해당 객체를 포함한지 true/false반환
System.out.println(al.contains(new pModelVo05("물",500))); // true
System.out.println(al.contains(new pModelVo05("물",0))); // false
// 7. indexOf(Object o): int
// 해당 객체의 인덱스번호 반환
// 해당 값이 없을경우 -1 반환
System.out.println(al.indexOf(new pModelVo05("물",500))); // 0
System.out.println(al.indexOf(new pModelVo05("커피",1500))); // 1
System.out.println(al.indexOf(new pModelVo05("커피",500))); // -1 // 없을경우-1반환
// 8. equals(Object o):boolean
// 지정된 객체와 목록이 같은지 비교
System.out.println(al); // [물[500원], 커피[1500원]]
System.out.println(al.equals(new pModelVo05("물",500))); // false //[물[500원], 커피[1500원]]와 비교해서 false
System.out.println(al.equals(new pModelVo05("커피",1500))); //al인 [물[500원], 커피[1500원]]와 비교 하니 false
System.out.println(new pModelVo05("물",500).equals(new pModelVo05("물",500))); // true
System.out.println(new pModelVo05("커피",1500).equals(new pModelVo05("커피",1500))); // true
// 9. clear()
// clear():void
al.clear();
System.out.println(al); // []
// 10. isEmpty():boolean
System.out.println(al.isEmpty()); // true
System.out.println("=====ArrayList<string>=====");
ArrayList<String> aList = new ArrayList<>();
aList.add(new String("인내"));
aList.add(new String("노력"));
System.out.println(aList.remove(new String("인내")));
System.out.println(aList);
// aList.equals(new String("인내"));
System.out.println(aList.equals(new String("인내")));
}
}
package MVC.model.vo;
public class pModelVo05 {
private String flavor;
private int price;
public pModelVo05() {}
public pModelVo05(String flavor, int price) {
super(); // 안써도 됨. 자동완성해서 생긴것. 원래는 생성자를 불러올 때 부모생성자를 불러오고 시작함.
this.flavor = flavor; // 그래야 자식 객체를 만들 때 부모 객체 생성자를 만들기 때문
this.price = price;
}
// getter / setter
public String getFlavor() {
return flavor;
}
public int getPrice() {
return price;
}
public void setFlavor(String flavor) {
this.flavor = flavor;
}
public void setPrice(int price) {
this.price = price;
}
// toString
@Override
public String toString() {
return flavor+"["+price+"원]";
}
@Override
public boolean equals(Object obj) {
// 객체 비교
if (this == obj) { // this는 주소값 비교할려고 넣은 것
return true;
}
if(obj == null) {
return false;
}
if(getClass() != obj.getClass()) { // 내 클래스 정보와 상대방의 클래스 정보가 같은지 비교
return false;
}
pModelVo05 other = (pModelVo05)obj; // 다운캐스팅 : obj->Snack
if(flavor == null) { // other는 레퍼런스 변수
if(other.flavor != null) {
return false;
}
}else if(!flavor.equals(other.flavor)) { // 이름에 대한 비교
return false;
}
if(price != other.price) { // 목록에 대한 비교
return false;
}
return true;
}
@Override
public int hashCode() {
final int PRIME = 31; // 컴퓨터가 이해하기 좋은 숫자가 31이라함
int result = 1;
result = PRIME * result + (flavor == null ? 0 : flavor.hashCode()); // 내 해쉬코드가 아니라 스트링의 해쉬코드를 가져오는 것
result = PRIME * result + price; // 형이 안맞아서 에러나니 캐스팅 또는 소수점 없게끔 계산
return result;
}
}
SELECT 컬럼명 -- 조회하고자 하는 컬럼명 기술 FROM 테이블명 -- 조회하고자 하는 컬림이 포함된 테이블명 기술 WHERE 조건식; -- 행을 선택하는 조건 기술, 조건을 만족하는 행만 반환 -- 조건식 복수로 붙여서 사용가능. 복수라도 WHERE절 한개만 기술
비교연산자
>, <, >=, <=, = ,!=
크다, 작다, 크거나 같다 같다 : = 같지않다 : != , ^= , <>
컬럼 별칭
컬럼명 AS 별칭 / 컬럼명 AS “별칭” / 컬럼명 별칭 / 컬럼명 “별칭”
별칭 : ""
리터럴(literal)
값 자체
싱글쿼테이션( ' ' )
오라클에서는 문자,문자열,데이트 상관없이 다 싱글쿼테이션(’ ‘)으로 감싸준다
-- 컬럼 별칭
-- 컬럼명 AS 별칭 / 컬럼명 AS “별칭” / 컬럼명 별칭 / 컬럼명 “별칭”
/*
리터럴(literal)
값 자체 ‘ ‘
오라클에서는 문자,문자열,데이트 상관없이 다 싱글쿼테이션(’ ‘)으로 감싸준다
데이터 타입에 상관없이 별칭(””) 외에는 다 싱글쿼테이션으로 감싼다
*/
-- EMPLOYEE 테이블에서 직원의 직원 번호, 사원명, 급여, 단위 조회
SELECT EMP_NO, EMP_NAME, SALARY, '원' "단위 : 원"
FROM EMPLOYEE;
SELECT EMP_NO, EMP_NAME, SALARY, '@' "원"
FROM EMPLOYEE;
-- 별칭 : ""
-- 리터럴을 싱글쿼테이션으로 처리한다 : ' '
-- '원'이라는 컬럼을 보여주고 싶지않으면 더블쿼테이션""으로 단위써주자
-- EMPLOYEE테이블에서 직원의 직급 코드 조회
SELECT EMP_ID, '직급코드' AS 직급코드
FROM EMPLOYEE;
SELECT EMP_NAME, EMAIL
FROM EMPLOYEE
WHERE EMAIL LIKE 'b%';
-- 결과 : 방명수 bang ns@kh.kr
-- 결과 : 없음
-- 리터럴은 대소문자 철저히 구별하기에 대문자 BANG으로 시작하는 EMAIL이 없어서 안나온 것
-- EMPLOYEE 테이블에서 직원의 부서 코드를 중복 없이 조회
SELECT DISTINCT JOB_CODE
FROM EMPLOYEE;
-- DISTINCT는 한번만 쓸 수 있다
--SELECT DISTINCT DEPT_CODE, DISTINCT DEPT_CODE -- error
--FROM EMPLOYEE;
SELECT DISTINCT DEPT_CODE, JOB_CODE -- 콤마로 두 컬럼을 묶으면 두 컬럼의 조건이
FROM EMPLOYEE; -- AND조건으로 교집합 된 것만 중복 제거한다
/*
SELECT 컬럼명 -- 조회하고자 하는 컬럼명 기술
FROM 테이블명 -- 조회하고자 하는 컬림이 포함된 테이블명 기술
WHERE 조건식; -- 행을 선택하는 조건 기술, 조건을 만족하는 행만 반환
-- 조건식 복수로 붙여서 사용가능. 복수라도 WHERE절 한개만 기술
--비교연산자
>, <, >=, <=, = ,!=
크다, 작다, 크거나 같다
같다 : =
같지않다 : != , ^= , <>
*/
--EMPLOYEE테이블에서 부서코드가 'D9'인 직원의 이름, 부서코드 조회
SELECT EMP_NAME, DEPT_CODE
FROM EMPLOYEE
WHERE DEPT_CODE = 'D9';
-- '' 없이 D9만 쓰면 컬럼으로 인지하게 됨
-- 'd9'라고 써도 안됨. 리터럴은 대소문자 구분
--급여가 4000000이상인 직원의 이름, 급여 조회
SELECT EMP_NAME, SALARY
FROM EMPLOYEE
WHERE SALARY >= 4000000;
-- EMPLOYEE테이블에서 부서코드가 D9이 아닌 사원의 사번, 이름, 부서코드조회
SELECT EMP_NO, EMP_NAME, DEPT_CODE
FROM EMPLOYEE
--WHERE DEPT_CODE != 'D9';
WHERE DEPT_CODE <> 'D9';
WHERE DEPT_CODE ^= 'D9';
-- EMPLOYEE 테이블에서 퇴사 여부가 N인 직원을 조회하고 근무 여부를 재직중으로 표시
-- 사번,이름, 고용일, 근무여부 조회
SELECT EMP_ID, EMP_NAME, HIRE_DATE, '재직중' "근무여부"
FROM EMPLOYEE
WHERE ENT_YN = 'N';