2017년 11월 26일 일요일

HashMap

HashMap<String,String> hmap = HashMap<String,String>();
hmap.put("key1","val1");
hmap.put("key2","val2");
hmap.put("key3","val3");

String[] keys = hmap.keySet().toArray(new String[0]);

for(int i=0;i<keys.length;i++){
 String key = keys[i];
 String val = hmap.get(key);

 System.out.println(key+" : "+val);
}

Set key = map.keySet();
 
  for (Iterator iterator = key.iterator(); iterator.hasNext();) {
                   String keyName = (String) iterator.next();
                   String valueName = (String) map.get(keyName);
 
                   System.out.println(keyName +" = " +valueName);
  }

List<Map<String, String>> list2 = new ArrayList<Map<String, String>>();
Map<String, String> map2 = new HashMap<String, String>();
map2.put("Label", "未申請");
map2.put("Value", "1");
list2.add(map2);

Map<String, String> map3 = new HashMap<String, String>();
map3.put("Label", "申請中");
map3.put("Value", "2");
list2.add(map3);

Map<String, String> map4 = new HashMap<String, String>();
map4.put("Label", "申請済");
map4.put("Value", "3");
list2.add(map4);

List<Map<String, String>> listNew = new ArrayList<Map<String, String>>();

for (int i=0; i < list2.size(); i++)
{
Map<String, String> maptt = new HashMap<String, String>();
String[] keys = list2.get(i).keySet().toArray(new String[0]);
maptt.put(keys[0], list2.get(i).get(keys[0]));
maptt.put(keys[1], list2.get(i).get(keys[1]));
listNew.add(maptt);
}

Iterator iterator = map.entrySet().iterator();

while (iterator.hasNext()) {
Entry entry = (Entry)iterator.next();

System.out.println("Key: " + entry.getKey() + ", Value: " + entry.getValue());

HashMap은 key 와 value 쌍으로 존재하는 자료구조이다.
프로그래머가 key값을 알고 있는 상태에서 쓰는 경우도 있지만,
프로그래머가 동적으로 구한 데이터를 key, value 쌍으로
HashMap을 쓴 경우는 프로그래머도 key 값이 무엇이 들어갔는지 알 수가 없다.
arrayList 처럼 index 가 정해져 있는것도 아니라
순차적으로 Log 에 찍어보기도 애매하다.

오늘 포스팅 내용은 이러한 상황에서 HashMap key값이 무엇이 있는지
구하는것이다.

HashMap 클래스 내부구조로 Set 자료구조에 key를 보관한 객체가 존재한다.
Set 객체를 통해 key를 가져오는 것이다. Set 객체에 들어있는 값(key)를 iterator 인터페이스를 통해, 순차적으로 탐색할 준비를한다.

HashMap<String,String> hashMap = new HashMap<>();
hashMap.put("key","value");

Set set = hashMap.keySet();
Iterator iterator = set.iterator();

가져온 후, iterator를 통해 순차탐색한다.

while(iterator.hasNext()){
  String key = (String)iterator.next();
  System.out.println("hashMap Key : " + key);
}

Entry 객체를 이용한 방법도 있다.
Entry 객체를 이용하면 key 와 value를 동시에 구할 수 있다.
물론 위에 코드로 key값을 구한 후, hashMap.get(key) 로 value를 구해도 상관없다.

Set set = hashMap.entrySet();
Iterator iterator = set.iterator();

while(iterator.hasNext()){
  Map.Entry entry = (Map.Entry)iterator.next();
  String key = (String)entry.getKey();
  String value = (String)entry.getValue();
  System.out.println("hashMap Key : " + key);
  System.out.println("hashMap Value : " + value);
}

주의할 점은 Set 자료형에 keySet() 을 넣은 경우와 entrySet() 경우를 잘 구별해서 이용 해야한다.

Map<String, Integer> map = list.stream()      // 1. listをstream()に渡す。
    .collect(Collectors.toMap(   // 2. streamをcollect()メソッドに渡し、CollectorsクラスのMapインスタンス生成メソッドを実行します
    s -> s, // 3. Mapキーを取得するラムダ式
    s -> s.length() // 4. Mapの値を取得するラムダ式
));

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class Main {

    public static void main(String[] args) {
        //Listの宣言
        List<String> list = new ArrayList<>();
       
        list.add("apple");
        list.add("orange");
        list.add("melon");
       
        //Mapの宣言
        Map<Integer, String> map = new HashMap<>();
       
        int i = 1;
        for(String str : list) {
            // MapにListの値を追加
            map.put(i, str);
            i++;
        }
       
        System.out.println(map);
    }

}

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class Main {

    public static void main(String[] args) {
        //Listの宣言
        List<Integer> list = new ArrayList<>();
       
        list.add(1);
        list.add(2);
        list.add(3);
       
        //Mapの宣言
        Map<Integer, String> map = new HashMap<>();
       
        for(Integer num : list) {
            // MapにListのキーと値を追加
            map.put(num, "apple");
        }
       
        System.out.println(map);
    }

}

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class Main {

    public static void main(String[] args) {
        //Mapの宣言
        Map<String, Integer> map = new HashMap<>();
        map.put("apple", 1);
        map.put("orange", 2);
        map.put("melon", 3);
       
        //Listを宣言し、valuesメソッドを使用して値を取得する
        List<Integer> list = new ArrayList<>(map.values());
        System.out.println(list);
    }

}

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class Main {

    public static void main(String[] args) {
        //Mapの宣言
        Map<String, Integer> map = new HashMap<>();
        map.put("apple", 1);
        map.put("orange", 2);
        map.put("melon", 3);
       
        //Listを宣言し、keySetメソッドを使用してキーの値を取得する
        List<String> list = new ArrayList<>(map.keySet());
        System.out.println(list);
    }

}

  HashMap map = new HashMap();

  map.put("key01", "value01");
  map.put("key02", "value02");
  map.put("key03", "value03");
  map.put("key04", "value04");
  map.put("key05", "value05");         

  Set key = map.keySet();
 
  for (Iterator iterator = key.iterator(); iterator.hasNext();) {
                   String keyName = (String) iterator.next();
                   String valueName = (String) map.get(keyName);
 
                   System.out.println(keyName +" = " +valueName);
  }

<select>
  <option value="volvo">Volvo</option>
  <option value="saab">Saab</option>
  <option value="opel">Opel</option>
  <option value="audi">Audi</option>
</select>

$("#selectBtn").click(function() {
var target = document.getElementById("gender");
alert(target.options[target.selectedIndex].text);
//alert($('select option:selected').text());
});

 <input id="selectBtn" type="button" value="selectButton">
  <select id="gender" name="gender" class="style12">
    <option selected="selected">ALL</option>
    <option>Male Only</option>
    <option>Female Only</option>
</select>

<a href="https://www.w3schools.com" target="_blank">Visit W3Schools</a>

<form action="/action_page.php" method="get" target="_blank">
  First name: <input type="text" name="fname"><br>
  Last name: <input type="text" name="lname"><br>
  <input type="submit" value="Submit">
</form>

댓글 없음:

댓글 쓰기