जावा में मानचित्र बनाएँ


85

मैं mapऐसी प्रविष्टियाँ बनाना चाहता हूँ जिनमें प्रविष्टियाँ शामिल हों(int, Point2D)

मैं जावा में यह कैसे कर सकता हूं?

मैंने निम्नलिखित असफलता की कोशिश की।

HashMap hm = new HashMap();

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

जवाबों:


117
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.*;
मैक्स

21

आरंभीकरण के साथ-साथ मानचित्र बनाने का एक बेहतर तरीका है:

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

अधिक विकल्पों के लिए यहां एक नज़र डालें मैं स्थैतिक मानचित्र को कैसे आरंभ कर सकता हूं?


4
यह वास्तव में नक्शे को कमजोर करने का एक बुरा तरीका है।
काओ

1
@ काओ क्यों? यह सिर्फ नेत्रहीन ऑपरेशन होता है, अन्यथा यह इस प्रश्न पर शीर्ष उत्तर के समान है।
एंथनी मंसूर

5
नहीं यह नहीं। यह एक डबल-ब्रेस इनिशियलाइज़ेशन है, जो आम तौर पर एक विरोधी पैटर्न है। यहाँ क्यों है
काओ


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

Point2D.Doubleएक Point2D= \ के रूप में नहीं दिखता है
लुइगी मेंडोज़ा

उपयोग करते हुए Map<int, Point2D> hm = new HashMap<int, Point2D>(), मुझे यह त्रुटि मिलती है: टोकन "int" पर सिंटैक्स त्रुटि, इस टोकन के बाद आयाम की उम्मीद है।
केविन मेरेडिथ

भूल गए कि जावा मानचित्र आदिम प्रकारों का समर्थन नहीं करते हैं। तय किया कि
अचोमैन

लेकिन मुझे [कुंजी, मूल्य] में मूल्य के रूप में पॉइंट 2 डी की आवश्यकता है। : /
केविन मेरेडिथ

यही मैंने शुरू में लिखा था।
अचोमैन

1

मैं जावा 9 के लिए इस तरह की मैप आबादी का उपयोग करता हूं। मेरी ईमानदार राय में, यह दृष्टिकोण कोड को अधिक पठनीयता प्रदान करता है।

  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);
  }

1

नए जावा संस्करणों ( यानी, जावा 9 और आगे) के साथ आप उपयोग कर सकते हैं:

Map.of(1, new Point2D.Double(50, 50), 2, new Point2D.Double(100, 50), ...)

सामान्य रूप से:

Map.of(Key1, Value1, Key2, Value2, KeyN, ValueN)

हालाँकि यह ध्यान में रखें कि Map.ofकेवल अधिकांश 10 प्रविष्टियों के लिए काम करता है , यदि आपके पास उन प्रविष्टियों से अधिक है 10जिनका आप उपयोग कर सकते हैं:

Map.ofEntries(entry(1, new Point2D.Double(50, 50)), entry(2,  new Point2D.Double(100, 50)), ...);
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.