다음과 같은 Java 해시 맵이 있습니다.
private Map<String, Integer> team1 = new HashMap<String, Integer>();
그런 다음 다음과 같이 채 웁니다.
team1.put("United", 5);
열쇠는 어떻게 줍니까? 같은 뭔가 : team1.getKey()
"미국"을 반환합니다.
int
이 같은 단일에 사용해야합니다.
다음과 같은 Java 해시 맵이 있습니다.
private Map<String, Integer> team1 = new HashMap<String, Integer>();
그런 다음 다음과 같이 채 웁니다.
team1.put("United", 5);
열쇠는 어떻게 줍니까? 같은 뭔가 : team1.getKey()
"미국"을 반환합니다.
int
이 같은 단일에 사용해야합니다.
답변:
A HashMap
는 둘 이상의 키를 포함합니다. keySet()
모든 키 세트를 얻는 데 사용할 수 있습니다 .
team1.put("foo", 1);
team1.put("bar", 2);
저장할 1
키 "foo"
와 2
키 "bar"
. 모든 키를 반복하려면 :
for ( String key : team1.keySet() ) {
System.out.println( key );
}
인쇄됩니다 "foo"
및 "bar"
.
List<String> keys = new ArrayList<>(mLoginMap.keySet());
인덱스를 알고 있다면 이론 상으로는 가능 합니다.
System.out.println(team1.keySet().toArray()[0]);
keySet()
집합을 반환하므로 집합을 배열로 변환합니다.
물론 문제는 세트가 주문을 유지할 것을 약속하지 않는다는 것입니다. HashMap에 하나의 항목 만 있으면 좋을 것입니다.하지만 그보다 많은 경우 다른 답변과 마찬가지로 맵을 반복하는 것이 가장 좋습니다.
HashMap
. 좋은 공연.
이것을 확인하십시오.
https://docs.oracle.com/javase/8/docs/api/java/util/HashMap.html
( java.util.Objects.equals
HashMap은를 포함 할 수 있기 때문에 사용 null
)
JDK8 + 사용
/**
* Find any key matching a value.
*
* @param value The value to be matched. Can be null.
* @return Any key matching the value in the team.
*/
private Optional<String> getKey(Integer value){
return team1
.entrySet()
.stream()
.filter(e -> Objects.equals(e.getValue(), value))
.map(Map.Entry::getKey)
.findAny();
}
/**
* Find all keys matching a value.
*
* @param value The value to be matched. Can be null.
* @return all keys matching the value in the team.
*/
private List<String> getKeys(Integer value){
return team1
.entrySet()
.stream()
.filter(e -> Objects.equals(e.getValue(), value))
.map(Map.Entry::getKey)
.collect(Collectors.toList());
}
더 "일반적인"그리고 가능한 한 안전
/**
* Find any key matching the value, in the given map.
*
* @param mapOrNull Any map, null is considered a valid value.
* @param value The value to be searched.
* @param <K> Type of the key.
* @param <T> Type of the value.
* @return An optional containing a key, if found.
*/
public static <K, T> Optional<K> getKey(Map<K, T> mapOrNull, T value) {
return Optional.ofNullable(mapOrNull).flatMap(map -> map.entrySet()
.stream()
.filter(e -> Objects.equals(e.getValue(), value))
.map(Map.Entry::getKey)
.findAny());
}
또는 JDK7을 사용중인 경우.
private String getKey(Integer value){
for(String key : team1.keySet()){
if(Objects.equals(team1.get(key), value)){
return key; //return the first found
}
}
return null;
}
private List<String> getKeys(Integer value){
List<String> keys = new ArrayList<String>();
for(String key : team1.keySet()){
if(Objects.equals(team1.get(key), value)){
keys.add(key);
}
}
return keys;
}
HashMap
키는 고유합니다.
Map
메소드를 사용하여 모든 키를 검색 할 수 있습니다 keySet()
. 만약 당신이 필요로하는 것이 그 가치가 주어진 키 를 얻는 것이라면 , 그것은 완전히 다른 문제이며 당신을 도울 수 없습니다. Apache의 Commons Collections 에서 (키와 값 사이의 양방향 조회를 허용하는 맵) 과 같은 특수한 데이터 구조가 필요합니다. 또한 여러 다른 키가 동일한 값에 맵핑 될 수 있다는 점에 유의하십시오.Map
BidiMap
United
값이 주어진 인수 ( ) 를 얻으려면 5
양방향 맵 사용을 고려할 수도 있습니다 (예 : 구아바 제공 : http://docs.guava-libraries.googlecode.com/git/javadoc/com/google /common/collect/BiMap.html ).
private Map<String, Integer> _map= new HashMap<String, Integer>();
Iterator<Map.Entry<String,Integer>> itr= _map.entrySet().iterator();
//please check
while(itr.hasNext())
{
System.out.println("key of : "+itr.next().getKey()+" value of Map"+itr.next().getValue());
}
next()
루프에서 두 번 호출 하면 홀수 번호 키와 짝수 번호 값이 인쇄됩니다.
이 간단한 프로그램을 사용해보십시오 :
public class HashMapGetKey {
public static void main(String args[]) {
// create hash map
HashMap map = new HashMap();
// populate hash map
map.put(1, "one");
map.put(2, "two");
map.put(3, "three");
map.put(4, "four");
// get keyset value from map
Set keyset=map.keySet();
// check key set values
System.out.println("Key set values are: " + keyset);
}
}
public class MyHashMapKeys {
public static void main(String a[]){
HashMap<String, String> hm = new HashMap<String, String>();
//add key-value pair to hashmap
hm.put("first", "FIRST INSERTED");
hm.put("second", "SECOND INSERTED");
hm.put("third","THIRD INSERTED");
System.out.println(hm);
Set<String> keys = hm.keySet();
for(String key: keys){
System.out.println(key);
}
}
}
HashMap에서 키를 얻으려면 java.util.Hashmap
패키지에 keySet () 메소드가 있습니다. 예 :
Map<String,String> map = new Hashmap<String,String>();
map.put("key1","value1");
map.put("key2","value2");
// Now to get keys we can use keySet() on map object
Set<String> keys = map.keySet();
이제 키 는지도에서 모든 키를 사용할 수있게됩니다. 예 : [key1, key2]
java,util.HashMap
패키지가 아닌 클래스이며 5 년 전에는 없었던 것이 없습니다.
내가 할 일은 매우 간단하지만 메모리를 낭비하는 것은 값을 키로 매핑하고 oposite를 수행하여 키를 값으로 매핑하는 것입니다.
private Map<Object, Object> team1 = new HashMap<Object, Object>();
<Object, Object>
지도를 작성 keys:Value
하고 Value:Keys
이와 같이 사용할 수 있도록 사용하는 것이 중요합니다
team1.put("United", 5);
team1.put(5, "United");
당신이 사용하는 경우 그래서 team1.get("United") = 5
및team1.get(5) = "United"
그러나 쌍으로 된 객체 중 하나에 특정 방법을 사용하면 다른지도를 작성하는 것이 좋습니다.
private Map<String, Integer> team1 = new HashMap<String, Integer>();
private Map<Integer, String> team1Keys = new HashMap<Integer, String>();
그리고
team1.put("United", 5);
team1Keys.put(5, "United");
기억하십시오, 간단하게 유지하십시오.)
키 와 그 가치 를 얻으려면
예 :
private Map<String, Integer> team1 = new HashMap<String, Integer>();
team1.put("United", 5);
team1.put("Barcelona", 6);
for (String key:team1.keySet()){
System.out.println("Key:" + key +" Value:" + team1.get(key)+" Count:"+Collections.frequency(team1, key));// Get Key and value and count
}
인쇄 : 키 : 유나이티드 가치 : 5 키 : 바르셀로나 가치 : 6
team1.getKey()
(1)지도가 비어 있거나 (2) 여러 키가 포함 된 경우 무엇 을 반환해야합니까?