سؤال

ولدي HashMap أنني أستخدم في معالجة وأود أن زيادة القيمة في الخريطة. I Google'd ذلك، وتبين لي أن التعليمات البرمجية التالية هو الصحيح:

if (colors.containsKey(ckey))
{
    colors.put(ckey, colors.get(ckey) + 1);
} else {
    colors.put(ckey, 1);
}

وأظل الحصول على:

وغير معرف المشغل + لنوع الوسيطة (ق) وجوه، الباحث

وأنا لست المبرمج جافا ولكن تقول مرجعية تقوم بإرجاع كائن ... لا بد لي من استخدام أسلوب .getValue () على ذلك لاستخراج الباحث؟

وربما أفعل شيئا آخر على خطأ؟ هممم.

والتحيات.

هل كانت مفيدة؟

المحلول

وأنا لا أعرف شيئا عن "معالجة" ولكن بالنظر إلى رمز أعلاه، تحتاج إلى التلبيس القيمة إلى عدد صحيح قبل أن يضيف.

ولست متأكدا ما هو إصدار جافا يتم استخدامه هنا ولكن يمكنك أن تفعل شيئا من هذا القبيل.

if (colors.containsKey(ckey)) 
{ 

  int val = ((Integer) colors.get(ckey)).intValue();
  colors.put(ckey, new Integer(val + 1);
}
else 
{ 
  colors.put(ckey, 1); 
}

نصائح أخرى

وافتراضيا، فإن HashMap تتيح لك تخزين أي نوع من الكائن دون التحقق من نوع الكائن تستخدم إما مفاتيح أو القيم.

ويجب عليك أن تحاول أن يعلن HashMap باستخدام إعلان من نوع آمن من الخريطة الخاصة بك:

HashMap<Color, Integer> colors = new HashMap<Color, Integer>();

و(لاحظ أن أفترض مفاتيح الخريطة وjava.awt.Color والقيم دائما كثافة العمليات)

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top