Programming Basics SQL HTML CSS JavaScript Python C++ Java JavaFX Swing Problem Solving English English Conversations Computer Fundamentals Learn Typing

Javaالكلاس TreeSet في جافا

  • مقدمة
  • كونستركتورات الكلاس TreeSet
  • دوال الكلاس TreeSet
  • مثال شامل

مقدمة

الكلاس TreeSet يعتبر الكلاس الأكثر تطوراً بين كلاسات المجموعة Set, و هو يستخدم لتخزين عناصر متتالية, و ترتيبهم بالطريقة التي تريد, كما أنه يسمح بتخزين القيمة null, لكنه لا يسمح بتخزين أكثر من عنصر عندهم نفس القيمة, فتجد كل عنصر فيه يملك قيمة مختلفة. و هو يحتوي على دوال أخرى تسهل طريقة الوصول للعناصر.


طريقة ترتيب العناصر

إفتراضياً, في حال كانت قيم العناصر تمثل أرقام, عندها يتم ترتيبهم من العدد الأصغر إلى العدد الأكبر.
أما في حال كانت قيم العناصر تمثل نصوص أو كلمات أو أحرف, عندها يتم ترتيبهم ترتيباً أبجدياً.

كما يمكنك تحديد طريقة ترتيب العناصر بنفسك.


بناؤه

public class TreeSet<E>
extends AbstractSet<E>
implements NavigableSet<E>, Cloneable, Serializable
public class TreeSet<E> extends AbstractSet<E> implements NavigableSet<E>, Cloneable, Serializable

إذاً الكلاس TreeSet يرث من الكلاس AbstractSet, و يطبق الإنترفيسات NavigableSet - Cloneable - Serializable.

كونستركتورات الكلاس TreeSet

الجدول التالي يحتوي على جميع الكونستركتورات الموجودين في الكلاس TreeSet.

الكونستركتور مع تعريفه
1 public TreeSet() هذا الكونستركتور الإفتراضي في الكلاس TreeSet, يستخدم لإنشاء كائن نوعه TreeSet فارغ يرتب العناصر التي يتم إدخالها فيه بشكل تصاعدي Ascending.
2 public TreeSet(Collection c) يستخدم هذا الكونستركتور لإنشاء كائن نوعه TreeSet يحتوي على عناصر كائن الـ Collection الذي نمرره له كـ Argument.
3 public TreeSet(SortedSet ss) يستخدم هذا الكونستركتور لإنشاء كائن نوعه TreeSet يحتوي على عناصر كائن الـ SortedSet الذي نمرره له كـ Argument.
4 public TreeSet(Comparator c) يستخدم هذا الكونستركتور لإنشاء كائن نوعه TreeSet فارغ يرتب العناصر التي يتم إدخالها فيه على أساس كائن الـ Comparator الذي نمرره له كـ Argument.
إذاً c عبارة عن كائن نوعه Comparator يمثل الطريقة التي سيعتمدها كائن الـ TreeSet في مقارنة قيم عناصره.

دوال الكلاس TreeSet

الجدول التالي يحتوي على جميع دوال الكلاس TreeSet.

الدالة مع تعريفها
1 public boolean add(Object o) تضيف عنصر جديد في كائن الـ TreeSet.
ترجع true إذا تمت الإضافة بنجاح.
2 public boolean addAll(Collection c) تضيف جميع عناصر الكائن c في آخر كائن الـ TreeSet.
ترجع true إذا تمت الإضافة بنجاح.
ترمي الإستثناء NullPointerException في حال كان الكائن c فارغاً.
3 public boolean remove(Object o) تحذف عنصر محدد من كائن الـ TreeSet و ترجعه.
ترجع true إذا تم حذف الكائن بنجاح, غير ذلك ترجع false.
4 public void clear() تمسح جميع العناصر الموجودة في كائن الـ TreeSet.
5 public Object clone() تنشئ نسخة من كائن الـ TreeSet.
6 public boolean contains(Object o) ترجع true في حال كان كائن الـ TreeSet يحتوي على القيمة التي نضعها لها كـ Argument.
7 public boolean isEmpty() ترجع true في حال كان كائن الـ TreeSet فارغاً.
8 public int size() ترجع عدد العناصر الموجودة في كائن الـ TreeSet.
9 public Object first() ترجع قيمة أول عنصر موجود في كائن الـ TreeSet.
ملاحظة: قيمته ستكون أصغر قيمة لأن العناصر في هذا الكائن تترتب فيه بشكل تصاعدي.
10 public Object last() ترجع قيمة آخر عنصر موجود في كائن الـ TreeSet.
ملاحظة: قيمته ستكون أكبر قيمة لأن العناصر في هذا الكائن تترتب فيه بشكل تصاعدي.
11 public SortedSet headSet(Object end) ترجع كائن نوعه SortedSet يحتوي على جميع عناصر كائن الـ TreeSet الذي قام باستدعائها الموجودة فيه قبل الكائن end.
12 public SortedSet tailSet(Object Start) ترجع كائن نوعه SortedSet يحتوي على جميع عناصر كائن الـ TreeSet الذي قام باستدعائها إبتداءاً من الكائن start حتى آخر عنصر موجود فيه.
13 public SortedSet subSet(Object start, Object end) ترجع كائن نوعه SortedSet يحتوي على جميع عناصر كائن الـ TreeSet الذي قام باستدعائها إبتداءاً من الكائن start وصولاً إلى الكائن end.
14 public Comparator comparator() ترجع كائن نوعه Comparator يمثل الإنترفيس المستخدم في مقارنة العناصر.
ترجع null في حال لم تقم بتغيير الإنترفيس الإفتراضي.
15 public Iterator iterator() ترجع كائن نوعه Iterator يحتوي على جميع عناصر كائن الـ TreeSet.

مثال شامل

في المثال التالي قمنا بإنشاء كائن من الكلاس TreeSet, إسمه ts, أدخلنا فيها 5 عناصر عبارة عن أرقام.
بعدها قمنا باستخدام بعض الدوال التي ذكرناها في الجدول السابق.


Main.java
import java.util.TreeSet; // TreeSet هنا قمنا باستدعاء الكلاس
public class Main {
public static void main(String[] args) {
// ts إسمه TreeSet هنا قمنا بإنشاء كائن من الكلاس
TreeSet ts = new TreeSet();
// تعمدنا عدم ترتيب القيم من الأصغر إلى الأكبر حتى ترى أنه سيرتبهم بشكل تلقائي .ts هنا قمنا بإضافة 5 قيم في الكائن
ts.add(4);
ts.add(2);
ts.add(5);
ts.add(3);
ts.add(1);
// لاحظ أنه قام بترتيبهم من الأصغر إلى الأكبر .ts هنا قمنا بعرض عناصر الكائن
System.out.println("All elements: " + ts);
// ts هنا قمنا بعرض أول عنصر موجود في الكائن
System.out.println("First element: " + ts.first());
// ts هنا قمنا بعرض آخر عنصر موجود في الكائن
System.out.println("Last element: " + ts.last());
// '3' الموجودة قبل العنصر الذي يملك القيمة ts هنا قمنا بعرض جميع عناصر الكائن
System.out.println("headSet(3): " + ts.headSet(3));
// '3' إبتداءاً من العنصر الذي يملك القيمة ts هنا قمنا بعرض جميع عناصر الكائن
System.out.println("tailSet(3): " + ts.tailSet(3));
// 'إبتداءاً من العنصر الذي يملك القيمة '1' وصولاً إلى ما قبل العنصر الذي يملك القيمة '4 ts هنا قمنا بعرض جميع عناصر الكائن
System.out.println("Subset(1, 4): " + ts.subSet(1, 4));
// هنا قمنا بعرض الإنترفيس المستخدم في مقارنة العناصر
System.out.println("Comparator(): " + ts.comparator());
}
}
import java.util.TreeSet; // TreeSet هنا قمنا باستدعاء الكلاس public class Main { public static void main(String[] args) { // ts إسمه TreeSet هنا قمنا بإنشاء كائن من الكلاس TreeSet ts = new TreeSet(); // تعمدنا عدم ترتيب القيم من الأصغر إلى الأكبر حتى ترى أنه سيرتبهم بشكل تلقائي .ts هنا قمنا بإضافة 5 قيم في الكائن ts.add(4); ts.add(2); ts.add(5); ts.add(3); ts.add(1); // لاحظ أنه قام بترتيبهم من الأصغر إلى الأكبر .ts هنا قمنا بعرض عناصر الكائن System.out.println("All elements: " + ts); // ts هنا قمنا بعرض أول عنصر موجود في الكائن System.out.println("First element: " + ts.first()); // ts هنا قمنا بعرض آخر عنصر موجود في الكائن System.out.println("Last element: " + ts.last()); // '3' الموجودة قبل العنصر الذي يملك القيمة ts هنا قمنا بعرض جميع عناصر الكائن System.out.println("headSet(3): " + ts.headSet(3)); // '3' إبتداءاً من العنصر الذي يملك القيمة ts هنا قمنا بعرض جميع عناصر الكائن System.out.println("tailSet(3): " + ts.tailSet(3)); // 'إبتداءاً من العنصر الذي يملك القيمة '1' وصولاً إلى ما قبل العنصر الذي يملك القيمة '4 ts هنا قمنا بعرض جميع عناصر الكائن System.out.println("Subset(1, 4): " + ts.subSet(1, 4)); // هنا قمنا بعرض الإنترفيس المستخدم في مقارنة العناصر System.out.println("Comparator(): " + ts.comparator()); } }

سنحصل على النتيجة التالية عند التشغيل.

All elements: [1, 2, 3, 4, 5]
First element: 1
Last element: 5
headSet(3): [1, 2]
tailSet(3): [3, 4, 5]
Subset(1, 4): [1, 2, 3]
Comparator(): null
All elements: [1, 2, 3, 4, 5] First element: 1 Last element: 5 headSet(3): [1, 2] tailSet(3): [3, 4, 5] Subset(1, 4): [1, 2, 3] Comparator(): null