sourcecode

Java에서의 해시 맵 인쇄

copyscript 2022. 8. 28. 09:53
반응형

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로로 합니다.MapSetMapentryset() 서 : : :
    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

반응형