Java에서의 해시 맵 인쇄
나는 가지고 있다HashMap
:
private HashMap<TypeKey, TypeValue> example = new HashMap<TypeKey, TypeValue>();
이제 모든 값을 검토하고 인쇄합니다.
나는 이렇게 썼다:
for (TypeValue name : this.example.keySet()) {
System.out.println(name);
}
효과가 없는 것 같아요.
뭐가 문제죠?
편집: 또 다른 질문:이 컬렉션은 제로 베이스입니까?키가 하나이고 값이 하나면 사이즈는 0인가요, 아니면 1인가요?
keySet()
는 해시 맵에서 키 세트만 반환합니다.이 키세트를 반복하고는 이 키를 사용하여 해시 맵에서 값을 가져옵니다.
이 예에서 해시 맵의 키 유형은 다음과 같습니다.TypeKey
, 단, 지정했습니다.TypeValue
일반 용어로for-loop
컴파일할 수 없습니다.다음으로 변경해야 합니다.
for (TypeKey name: example.keySet()) {
String key = name.toString();
String value = example.get(name).toString();
System.out.println(key + " " + value);
}
Java8 업데이트:
example.entrySet().forEach(entry -> {
System.out.println(entry.getKey() + " " + entry.getValue());
});
키 값을 인쇄할 필요가 없고 해시 맵 값만 필요한 경우 다른 사람의 제안을 사용할 수 있습니다.
또 다른 질문:이 컬렉션은 제로베이스인가요?키가 하나이고 값이 하나면 크기가 0인가요, 아니면 1인가요?
에서 반환된 컬렉션keySet()
는 입니다. 인덱스를 사용하여 집합에서 값을 얻을 수 없기 때문에 제로 베이스인지 원 베이스인지는 문제가 되지 않습니다.해시 맵에 키가1개 있는 경우keySet()
반환되는 엔트리는 1개이며 크기는 1이 됩니다.
키 값 쌍을 확인하는 간단한 방법:
Map<String, Integer> map = new HashMap<>();
map.put("a", 1);
map.put("b", 2);
System.out.println(Arrays.asList(map)); // method 1
System.out.println(Collections.singletonList(map)); // method 2
메서드 1과 메서드2의 출력은 다음과 같습니다.
[{b=2, a=1}]
를 가지고 있다고 가정합니다.Map<KeyType, ValueType>
, 다음과 같이 인쇄할 수 있습니다.
for (Map.Entry<KeyType, ValueType> entry : map.entrySet()) {
System.out.println(entry.getKey()+" : "+entry.getValue());
}
키와 값을 모두 인쇄하려면 다음을 사용합니다.
for (Object objectName : example.keySet()) {
System.out.println(objectName);
System.out.println(example.get(objectName));
}
몇 가지 옵션이 있습니다.
- [Get] : 키가 아닌 값을 가져옵니다.
- 둘 다 가지고 있는 것을 입수하다
- 키콜마다및을 입수합니다.
저는 이 간단한 한 줄이 잘 작동했습니다.
Arrays.toString(map.entrySet().toArray())
키 세트가 아닌 값 세트를 원합니다.
for (TypeValue name: this.example.values()) {
System.out.println(name);
}
당신이 준 코드는 컴파일도 하지 않을 것입니다.이것은 향후의 질문에서 언급할 가치가 있을지도 모릅니다.- 「실효하지 않는 것 같습니다」라고 하는 것은, 조금 애매합니다.
Java 8 접근법, 사용 및 람다 함수에 대해 언급할 가치가 있습니다.
BiConsumer<TypeKey, TypeValue> consumer = (o1, o2) ->
System.out.println(o1 + ", " + o2);
example.forEach(consumer);
오버라이드했다고 가정하면toString
필요한 경우 두 가지 유형의 방법을 사용합니다.
해시 맵의 참조를 포함하는 변수 이름을 가진 간단한 인쇄 문장은 다음과 같습니다.
HashMap<K,V> HM = new HashMap<>(); //empty
System.out.println(HM); //prints key value pairs enclosed in {}
이 동작은,toString()
메서드가 이미 오버라이드되었습니다.AbstractMap class
이것은, 에 의해서 확장되고 있습니다.HashMap Class
설명서의 상세
이 맵의 문자열 표현을 반환합니다.문자열 표현은 맵의 entrySet 뷰의 반복기에서 반환된 순서대로 중괄호("{})로 둘러싸인 키-값 매핑 목록으로 구성됩니다.인접 매핑은 문자 ", " (콤마와 공백)로 구분됩니다.각 키-값 매핑은 키 다음에 등호("=")와 관련 값이 차례로 렌더링됩니다.키와 값은 String.valueOf(Object)와 마찬가지로 문자열로 변환됩니다.
map.forEach((key, value) -> System.out.println(key + " " + value));
Java 8 기능 사용
8 Java 8 신 javaforEach
import java.util.HashMap;
public class PrintMap {
public static void main(String[] args) {
HashMap<String, Integer> example = new HashMap<>();
example.put("a", 1);
example.put("b", 2);
example.put("c", 3);
example.put("d", 5);
example.forEach((key, value) -> System.out.println(key + " : " + value));
// Output:
// a : 1
// b : 2
// c : 3
// d : 5
}
}
해시맵의 엔트리를 빠르게 인쇄하는 데 도움이 됩니다.
System.out.println(Arrays.toString(map.entrySet().toArray()));
String Map을 사용하여 실행했습니다(String Map을 사용하는 경우).
for (Object obj : dados.entrySet()) {
Map.Entry<String, String> entry = (Map.Entry) obj;
System.out.print("Key: " + entry.getKey());
System.out.println(", Value: " + entry.getValue());
}
Java 8 기능 사용:
map.forEach((key, value) -> System.out.println(key + " : " + value));
맵 사용.다음과 같이 인쇄할 수 있습니다.
for(Map.Entry entry:map.entrySet())
{
System.out.print(entry.getKey() + " : " + entry.getValue());
}
맵에서 모든 키와 값을 취득하는 기존 방법에서는 다음 순서를 따라야 합니다.
- ★★
HashMap
로로 합니다.MapSet
Map
entryset()
서 : : :
Set dataset = map.entrySet();
- 이 세트의 반복기를 가져옵니다.
Iterator it = dataset.iterator();
Map.Entry
: " " 레이이 from: " :Map.Entry entry = it.next();
getKey()
★★★★★★★★★★★★★★★★★」getValue()
의Map.Entry
키와 값을 검색합니다.
Set dataset = (Set) map.entrySet();
Iterator it = dataset.iterator();
while(it.hasNext()){
Map.Entry entry = mapIterator.next();
System.out.print(entry.getKey() + " : " + entry.getValue());
}
Java 8을 사용하여 지도 인쇄
Map<Long, String> productIdAndTypeMapping = new LinkedHashMap<>();
productIdAndTypeMapping.forEach((k, v) -> log.info("Product Type Key: " + k + ": Value: " + v));
값으로 하고 있는 , 추가 합니다. , 지도는 모음을 값으로 보유하고 있습니다.Arrays.deepToString(value.toArray())
) 목록 값의 맵인 경우)
는 이런 , 이 기능을 사용하여 객체를 인쇄하는 되었습니다.ObjectMappers
이것은 모든 장소에서, 특히 실험할 때 매우 편리하며, 이 방법을 선택하는 것을 추천합니다.
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializationFeature;
public static String convertObjectAsString(Object object) {
String s = "";
ObjectMapper om = new ObjectMapper();
try {
om.enable(SerializationFeature.INDENT_OUTPUT);
s = om.writeValueAsString(object);
} catch (Exception e) {
log.error("error converting object to string - " + e);
}
return s;
}
하시면 됩니다.Entry
할 것HashMap
★★★★★★ 。
for(Map.Entry<TypeKey, TypeKey> temp : example.entrySet()){
System.out.println(temp.getValue()); // Or something as per temp defination. can be used
}
언급URL : https://stackoverflow.com/questions/5920135/printing-hashmap-in-java
'sourcecode' 카테고리의 다른 글
Spring Data JPA는 메서드 이름 해결을 사용하여 엔티티를 카운트하는 방법이 있습니까? (0) | 2022.08.29 |
---|---|
자바에서의 &&&의 차이점 (0) | 2022.08.28 |
vue-cli-service에서 빌드된 Vue 구성 요소를 가져올 수 없음 (0) | 2022.08.28 |
v-for - VUE에서 어레이 항목을 제거하려면 인덱스를 하위 구성 요소에서 상위 구성 요소로 보냅니다.JS 2 (0) | 2022.08.28 |
여기서 메인 0이 반환되지 않는 이유는 무엇입니까? (0) | 2022.08.28 |