Tạo bản đồ trong Java


84

Tôi muốn tạo một mapchứa các mục nhập bao gồm(int, Point2D)

Làm thế nào tôi có thể làm điều này trong Java?

Tôi đã thử cách sau không thành công.

HashMap hm = new HashMap();

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

hm.put của bạn trông giống như mộtMap<Integer, Double>
Luiggi Mendoza


1
Ý bạn là gì không thành công?
texasbruce

Câu trả lời:


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

8
Bạn cũng phải làm import java.util.Map; import java.util.HashMap;hoặcimport java.util.*;
Tối đa

19

Thậm chí còn có một cách tốt hơn để tạo Bản đồ cùng với khởi tạo:

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

Để biết thêm các tùy chọn, hãy xem tại đây Làm cách nào để khởi tạo Bản đồ tĩnh?


4
Đây là một cách thực sự tồi để tạo ra một bản đồ.
Kao

1
@Kao Tại sao? Điều này chỉ chứa thao tác một cách trực quan, nếu không thì nó giống với câu trả lời hàng đầu cho câu hỏi này.
Anthony Mansour

5
Không, không phải. Nó là một khởi tạo dấu ngoặc kép, nói chung, là một phản mẫu. Đây là lý do tại sao .
Kao

18

Java 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")tốt hơn
ZhekaKozlov


@ZhekaKozlov Tôi đã thử sử dụng Map.of, khi chạy thử nghiệm nó báo không thể tìm thấy ký hiệujava: cannot find symbol symbol: method of(java.lang.String,double) location: interface java.util.Map
soMuchToLearn

@soMuchToLearn Bạn sử dụng phiên bản Java nào? Runjava -version
ZhekaKozlov

java 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.Doublekhông giống như một Point2D= \
Luiggi Mendoza

bằng cách sử dụng Map<int, Point2D> hm = new HashMap<int, Point2D>(), tôi gặp lỗi này: Lỗi cú pháp trên mã thông báo "int", Thứ nguyên được mong đợi sau mã thông báo này.
Kevin Meredith

Quên rằng bản đồ Java không hỗ trợ các kiểu nguyên thủy. Đã sửa điều đó.
Achrome

nhưng tôi cần Point2D làm giá trị trong [khóa, giá trị]. : /
Kevin Meredith

Đó là những gì tôi đã viết ban đầu.
Achrome

1

Tôi sử dụng loại dân số Bản đồ như vậy nhờ Java 9. Theo ý kiến ​​trung thực của tôi, cách tiếp cận này cung cấp mã dễ đọc hơn.

  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);
  }
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.