كيف يكون مع المتغيرات الديناميكية أنواع البيانات في جافا ؟

StackOverflow https://stackoverflow.com/questions/2882082

سؤال

أنا بحاجة إلى UserProfile فئة الأمر فقط على ملف تعريف المستخدم.هذا ملف تعريف المستخدم لديه بعض الحيوية بيانات المستخدم بالطبع ، ولكنه أيضا يحتاج إلى قوائم الرسائل المرسلة من المستخدم الأصدقاء.

أنا بحاجة إلى حفظ هذه الرسائل في LinkedList, ArrayList, HashMap و TreeMap.ولكن فقط في وقت واحد وعدم تكرار رسالة لكل بنية البيانات.أساسا ما يشبه ديناميكي متغير نوع حيث يمكن اختيار نوع بيانات الرسائل.

هو هذا, بطريقة أو بأخرى, ممكن في جافا ؟ أو أفضل نهج هو شيء مثل هذا?أعني 2 فئات مختلفة (المستخدم الشخصي) ، حيث يمكنني المضيف الرسائل Map<K,V> (ثم يمكنني استخدام HashMap و TreeMap أين مناسب) و فئة أخرى حيث المضيفة لهم List<E> (ثم يمكنني استخدام LinkedList و ArrayList أين مناسب).وربما استخدام فئة سوبر ل UserProfile لذلك أنا لم يكن لديك لتكرار المتغيرات وطرق مجالات مثل البيانات, العمر, العنوان, الخ...

أي أفكار ؟

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

المحلول 3

انتهى بي الأمر باستخدام ما هو موضح في المشاركة الأولى:

هو هذا, بطريقة أو بأخرى, ممكن في جافا ؟ أو أفضل نهج هو شيء من هذا القبيل هذا ؟ أعني 2 فئات مختلفة (بالنسبة للمستخدم الشخصي) ، حيث يمكنني المضيف الرسائل خريطة (، ثم يمكنني استخدام HashMap و TreeMap حيث مناسب) و فئة أخرى حيث أنا المضيفة لهم قائمة (ثم يمكنني استخدام LinkedList و ArrayList حيث مناسب).وربما استخدام سوبر الفئة UserProfile لذا لم يكن لديك لتكرار المتغيرات طرق مجالات مثل بيانات العمر ، عنوان ، الخ...

نصائح أخرى

أولا وقبل كل شيء ، أنت لا تكرار رسالة عن طريق إضافته إلى مجموعات مختلفة في نفس الوقت - فقط مخزن متميزة المراجع إلى نفس الكائن.(حسنا ، إلا رسالة تتمثل في نوع بدائي مثل long...ولكن هذه لا يمكن أن تضاف إلى مجموعات على أي حال.)

لماذا لا يمكن أن يكون لديك كل تلك المجموعات داخل نفس UserProfile?هذا سيسمح لك بالوصول إلى الرسائل الرئيسية أو مؤشر ، من خلال تكرار لهم أي بالطريقة التي تريدها.

A LinkedHashMap قد يكون أيضا خيار مثير للاهتمام بالنسبة لك ، كما أنه يضمن التكرار النظام ، حتى في الطريقة التي يتصرف على نحو مماثل إلى قائمة بشأن التكرار ، في حين لا تزال الخريطة.وفي نهاية الأمر يتلخص في كيفية كنت ترغب في الوصول إلى الرسائل من مستخدم معين ، والتي لم مفصلة.

تحديث: @ثعبان ، يمكنك فقط من تخزين مراجع إلى الكائنات في جافا مجموعات.البدائية long قيمة وبالتالي لا يمكن تخزينها مباشرة, فقط عن طريق تحويل إلى Long الكائن الأول.علما أنه منذ Java5 هذا التحويل قد يكون ضمنيا بسبب autoboxing ، لذلك كنت لا أرى ذلك في المدونة ، لكنه لا يزال يحدث مع ذلك - على سبيل المثال ،

List<Long> list = new ArrayList<Long>();
list.add(1L); // the primitive value is boxed into a Long object,
              // which is then added to the list
long value = list.get(0); // the value of the Long object in the list is outboxed
                          // and assigned to the primitive variable

إذا كان هذا هو مشروع جامعة ، ثم وأظن أن ما كنت من المفترض القيام به هو هذا:

Collection mycoll;
mycoll = new ArrayList();
for (Message m:message) {
  // do stuff and measure the performance
}
// do other stuff and measure the performance
mycoll = new LinkedList();
// do the same stuff as a above and measure the performance again
mycoll = new HashMap();
//... and so on

كما ذكر أعلاه, إضافة كائن إلى مجموعة لا تكرار ذلك.

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