Java BasicMap

4147 단어
Set과 Array List에 이어 오늘 배운 것은 맵으로, 이전 내용과 연관이 있고 다르다.Map과 Set의 연결성이 비교적 크다.구현 클래스:HashMap
정의 방법: Map
Map student = new HashMap<>();

세 개의 구성 원소로
  • Key
  • Value
  • Entry(또 다른 집합 유형, 상기 두 부분을 포괄): 정의 방법Entry
  • 여기서 주의해야 할 것은 Map과 이전의 Set과 Array List는 다르다. 이 두 가지는 대상을 저장하는 용기에 해당하고 대상을 많이 곱하면 하나의 집합인 Set이나 Array List가 된다.Map은 이 두 개보다 한 층 더 높아서 두 대상의 대응 관계, 즉 Key와 Value를 저장할 수 있다. 그러면 이 두 부분이 각각 쌓인 후에 섞일 수 없다. 각자의 용기가 있어야 Key가 사용하는 용기는 Set이고 Value가 사용하는 용기는 Collection이기 때문에 Map은 하나의 Set과 하나의 CollectionKey와 Value가 있는 것과 같다.그러면 당연히 조작 과정에서 상응하는 Set(keyset 사용)과Collection(values 사용))을 되돌려주고 각자 집합 내부에 대응하는 대상을 찾을 수 있다.그 밖에 Map에는 또 하나의 엔트리 집합이 있는데 키와 밸류, 키와 밸류가 쌍을 이루는 것을 저장할 수 있다. 하나의 조합 형식으로 보면 하나의 엔트리이다. 그러면 엔트리가 많이 쌓이고 하나의 Set이 된다.
    Method: EntrySet(), KeySet(), Values()는 개별 컬렉션을 반환하는 데 사용됩니다.
    public class MapTest {
        private Map student;
        
        //initiate Student in constructor 
        
        public MapTest(){
            student = new HashMap<>();
        }
        
        
            
        public void testKeyset(){
    // Set
            Set kSet;
            kSet = student.keySet();
    //Set Key , String 
            for(String stID: kSet){
                System.out.println("Student:" + stID);
            }
        }
        
        
        public void testEntryset(){
    // Entry 
            Set> eSet = student.entrySet();
            for(Entry e:eSet){
                System.out.print("ID is: " + e.getKey());
                System.out.println("Name is: " + e.getValue().getName());
                        }
        }
    
    

    증가, 삭제, 변경, 조사:put() 증가, 증가 과정에서 get() 방법과 함께 같은 대상이 원래 집합에 이미 존재하는지 확인:student.get (ID) 은 맵 형식 집합에 새로운 요소로 들어가는 판단 조건입니다. 맵 아래의 Set 클래스는 같은 요소가 있을 수 없기 때문입니다.
        public void testPut(){
            Scanner console = new Scanner(System.in);
            String ID;
            Student st;
            Student newStudent;
            String name;
            
            int i=0;
            while(i<3){
                System.out.println("Input student ID: ");
                ID = console.next();
                st = student.get(ID);
    
    // get , value.         
                if(st == null){
                System.out.println("Input student name: ");
                name = console.next();
                newStudent = new Student(ID, name);
    
    // put , get 
                
                student.put(ID, newStudent);
                System.out.println("Student added: " + student.get(ID).getName());
                System.out.println();
                i++;
                }
    // 
                else{
                    System.out.println("The ID's been taken");
                    continue;
                }
                
            }
    

    삭제는remove를 사용하고 get()을 사용하여 미리 판단합니다
    public void testRemove(){
            
            Scanner console = new Scanner(System.in);
            String ID;
            Student st;
            Student newStudent;
            String name;
            
            while(true){
                System.out.println("Input the name to be removed: ");
                ID = console.next();
                st = student.get(ID);
                if(st==null) {
                    System.out.println("The input ID doesn't exist!" );
                    continue;
                }
                else{
                student.remove(ID);
                break;
                }
                
            }
        }
    
    
    
    

    상기 2례에서 순환의 사용을 동시에 주의해야 한다. 만약에 순환하는 과정에서 조건 판단 후의 집행이 순환 계수와 순환 제어에 영향을 줄 수 있으면while를 사용하는 것이 좋다.foreach보다 좀 더 유연하다.
    int i=0;
    while(i<3){
    if(...){
    ...
    i++;
    }
    else{
    }
    
    elsei 
    
    
    

    또한:
    while(true){
               if(... ){  ...
      
                    continue;
                }
                else{...
    
                break;
    }
    
    

    순환에 대한 제어: 사순환 +while (true) + continue, 그리고 순환 종결:break.가장 좋은while 순환을 사용합니다.
    변경, 여전히put을 사용하여 같은 ID를 입력하고 직접 수정
    String name = scanner.next();
                st = new Student(ID, name);
                student.put(ID, st);
    

    좋은 웹페이지 즐겨찾기