개주 훈련일지/🏋️ 전집중 호흡 훈련

hasType - 어떠한 배열에 어떠한 타입이 있니

lshfood2 2025. 10. 28. 00:27
private boolean hasType(ArrayList<PersonDTO> datas, String type) {
	for(int i=0;i<datas.size();i++) { 
    //배열 데이터만큼 돌면서
		if(datas.get(i).getType().equals(type)) { 
        //타입과 똑같은걸 찾으면
		return true; //true 반환해
		}
	}
	return false //못찾으면 false 반환해

datas 배열에 type이 있니?

(=특정 DB에 그 값이 있니?)

를 물어보는 코딩이다.

 

첫번째 인자에는 물어봐야할 배열을 입력하고

두번째 인자에는 찾아야하는 value를 입력한다.

 

이러한 로직을 쓰면 중복값을 거르기 좋다.

 

▼hasType메서드를 활용한 호출 코드

else if(personDTO.getCondition().equals("MENU")) {
 for(int i=0;i<this.datas.size();i++) {
  if(!hasType(datas, this.datas.get(i).getType())) {
  PersonDTO data = new PersonDTO();
  data.setType(this.datas.get(i).getType());
  datas.add(data);

이러한 로직을 따로 메서드를 쓰지 않고

기존 프레임워크를 사용한다면?

Set과 Iterator 조합으로 해결할 수 있다.

Set<String> set = new HashSet<>();
 for(int i=0;i<this.datass.size();i++){
  set.add(this.datas.get(i).getType());
 }
 //중복값을 거른 Set
 //걸러진 Set값 정보를 담는 Iterator 
 Iterator itr = set.iterator();
 while(itr.hasNext()){
  PersonDTO data = new PersonDTO(); 
  //따따배생성
  data.setType((String)itr.next()); 
  //따따배에 다운캐스팅된 정보 담기
  datas.add(data);//배열에 data 추가
  }
  //Set에는 순서가 없기 때문에
  //Iterator가 페어로 따라오면 좋다.