자바로지도 만들기


84

다음 map으로 구성된 항목을 포함 하는을 만들고 싶습니다.(int, Point2D)

Java에서 어떻게 할 수 있습니까?

다음을 실패했습니다.

HashMap hm = new HashMap();

hm.put(1, new Point2D.Double(50, 50));

당신의 hm.put은 더 많은처럼 보이는Map<Integer, Double>
Luiggi 멘도사


1
성공하지 못했다는 것은 무엇을 의미합니까?
texasbruce 2014-06-03

답변:


115
Map <Integer, Point2D.Double> hm = new HashMap<Integer, Point2D>();
hm.put(1, new Point2D.Double(50, 50));

8
또한 수행해야합니다 import java.util.Map; import java.util.HashMap;또는import java.util.*;
최대

19

초기화와 함께지도를 만드는 더 좋은 방법이 있습니다.

Map<String, String> rightHereMap = new HashMap<String, String>()
{
    {
        put("key1", "value1");
        put("key2", "value2");
    }
};

더 많은 옵션을 보려면 여기를 참조하십시오 . 정적 맵을 어떻게 초기화 할 수 있습니까?


4
이것은 지도를 초기화 하는 정말 나쁜 방법입니다.
Kao

1
@Kao 왜? 이것은 시각적으로 작업을 포함하고, 그렇지 않으면이 질문에 대한 상위 답변과 동일합니다.
Anthony Mansour

5
아니, 그렇지 않습니다. 일반적으로 안티 패턴 인 이중 중괄호 초기화입니다. 그 이유는 다음과 같습니다 .
Kao

18

자바 9

public static void main(String[] args) {
    Map<Integer,String> map = Map.ofEntries(entry(1,"A"), entry(2,"B"), entry(3,"C"));
}

8
Map.of(1, "A", 2, "B", 3, "C")
ZhekaKozlov


@ZhekaKozlov 내가 Map.of를 사용하려고했는데, 테스트를 실행할 때 기호를 찾을 수 없다는 메시지가 표시됩니다java: cannot find symbol symbol: method of(java.lang.String,double) location: interface java.util.Map
soMuchToLearn

@soMuchToLearn 어떤 버전의 Java를 사용하십니까? 실행java -version
ZhekaKozlov

자바 11, @ZhekaKozlovopenjdk 11.0.8 2020-07-14 OpenJDK Runtime Environment (build 11.0.8+10-post-Ubuntu-0ubuntu120.04) OpenJDK 64-Bit Server VM (build 11.0.8+10-post-Ubuntu-0ubuntu120.04, mixed mode, sharing)
soMuchToLearn

9
Map<Integer, Point2D> hm = new HashMap<Integer, Point2D>();

Point2D.DoubleA와 보이지 않는 Point2D= \
Luiggi 멘도사

을 사용 Map<int, Point2D> hm = new HashMap<int, Point2D>()하면이 오류가 발생합니다. "int"토큰에 구문 오류가 있습니다.이 토큰 이후에 예상되는 치수입니다.
Kevin Meredith 2013

Java 맵은 기본 유형을 지원하지 않는다는 것을 잊었습니다. 수정했습니다.
Achrome 2013

하지만 [key, value]의 값으로 Point2D가 필요합니다. : /
Kevin Meredith 2013

그것이 제가 처음에 쓴 것입니다.
Achrome 2013

1

저는 Java 9 덕분에 이러한 종류의 Map 모집단을 사용합니다. 제 솔직한 의견으로는이 접근 방식이 코드에 더 많은 가독성을 제공합니다.

  public static void main(String[] args) {
    Map<Integer, Point2D.Double> map = Map.of(
        1, new Point2D.Double(1, 1),
        2, new Point2D.Double(2, 2),
        3, new Point2D.Double(3, 3),
        4, new Point2D.Double(4, 4));
    map.entrySet().forEach(System.out::println);
  }
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.