본문 바로가기

분류 전체보기

(1196)
HashSet , HashMap 순회 어떤 id의 객체 remove시에 hashSet 은 iterator로 찾아서 해당 id와 객체의 id가 같은지 비교 후에 제거 하고 hashMap은 해당 id를 포함하는지 봐서 포함하면 그 id를 바로 삭제한다. (contains 사용) if(map.contains(id)) map.remove(id); 이런식. 차이가 존재 하는 이유는 hashSet은 인자로 하나만 들어간다. 즉 id와 Member객체가 같이 들어가는 것이 아니고 Member만 들어가므로 Member를 꺼내서 그 아이디를 비교해서 맞으면 Member를 삭제하는 식인데 Hashmap은 id와 그 id의 해당 Member도 같이 들어가므로 id를 알면 그 id를 삭제해 버리면 Member도 삭제됨. HashMap 순회 HashMap은 순회할..
TreeSet 정렬기준 지정 class MyCompare implements Comparator { @Override public int compare(String s1, String s2) { return s1.compareTo(s2)*-1; } } public class Test { public static void main(String[] args) { TreeSet treeSet = new TreeSet(new MyCompare()); } 이렇게 하면 원래 String에 대해서 기존에 정의 되어 있던 compare을 사용하지 않고 Mycompare 방식을 사용함.
TreeSet TreeSet은 정렬을 위한 메소드를 구성해야 함. TreeSet의 타입 class에 (만약 Member라면) public class Member implements Comparable { @Override public int compareTo(Member member) { return (this.id - member.id); } 이렇게 하면 id에 대한 오름 차순. String은 이름의 순서대로 이미 구현 되어 있음. 이름으로 구현 해 주고 싶으면 @Override public int compareTo(Member member) { return this.name.compareTo(member.getName()); //이름은 String이므로 String에 대해 이미 구현된 compareTo사용 } @O..
Set 중복 처리 Set에서 중복데이터의 기준이 만약 객체의 id라면 id가 같은것이 논리적인 같은 객체라는 것을 정의 해 주기 위해서 해당 class에서 equals를 override해서 id가 같을 때 true를 반환하도록 하면 됨.
객체를 참조하는 Set 인터페이스 public class Memset{ private HashSet hashSet; public Memset() { hashSet = new HashSet(); } public void add(Member member) { hashSet.add(member); } public boolean remove(int id) { Iterator ir = hashSet.iterator(); while(ir.hasNext()) { Member member = ir.next(); if(member.getMemberId() == id) { hashSet.remove(member); return true; } } System.out.println(id+"존재 x"); return false; } public void sho..
Set 인터페이스 set은 순서대로 입력되지 않으므로 반환받을 때 iterator로 참조해서 뽑아야됨. 사실 for문 변형문도 사용 가능. ArrayList는 get 메소드로 가능. Set은 중복을 허용하지 않음 HashSet set = new HashSet(); set.add("이"); set.add("김"); set.add("이"); 이는 하나만 저장됨. Iterator ir = set.iterator(); while(ir.hasNext()) { String str = ir.next(); System.out.println(str); } hasNext는 다음 멤버가 있는지 따지는 것. ir.next()는 그 다음 변수고 타입이 String이므로 str에 받아서 출력가능.
백준 1405번 미친 로봇 문제 통제 할 수 없는 미친 로봇이 평면위에 있다. 그리고 이 로봇은 N번의 행동을 취할 것이다. 각 행동에서 로봇은 4개의 방향 중에 하나를 임의로 선택한다. 그리고 그 방향으로 한 칸 이동한다. 로봇이 같은 곳을 한 번보다 많이 이동하지 않을 때, 로봇의 이동 경로가 단순하다고 한다. (로봇이 시작하는 위치가 처음 방문한 곳이다.) 로봇의 이동 경로가 단순할 확률을 구하는 프로그램을 작성하시오. 예를 들어, EENE와 ENW는 단순하지만, ENWS와 WWWWSNE는 단순하지 않다. (E는 동, W는 서, N은 북, S는 남) 입력 첫째 줄에 N, 동쪽으로 이동할 확률, 서쪽으로 이동할 확률, 남쪽으로 이동할 확률, 북쪽으로 이동할 확률이 주어진다. N은 14보다 작거나 같은 자연수이고, 모든 확률은 ..
Stack , Queue Stack과 Queue는 ArrayList의 기능으로 금방 구현 가능. class Mystack{ private ArrayList sta = new ArrayList(); public void push(String data) { sta.add(data); } public String pop() { int len = sta.size(); if(len == 0) { System.out.println("empty"); return null; } return sta.remove(len-1); } } ------------------------------------------------ class MyQueue{ private ArrayList que = new ArrayList(); public void pus..