Sobes.tech
Junior

Java-ში რა კოლექციები არსებობს?

sobes.tech AI

პასუხი AI-სგან

Java-ში არსებობს შემდეგი ძირითადი კოლექციების ინტერფეისები, რომლებიც შედის Java Collections Framework-ში:

  • Collection: ძირითადი ინტერფეისი, რომელიც განსაზღვრავს საერთო ოპერაციებს ობიექტების ჯგუფებზე. მასგან მემკვიდრეობას იღებენ ქვესაინტერფეისები:

    • List: მოწესრიგებული კოლექცია (სერია). ელემენტები შეიძლება განმეორდეს. მხარდაჭერილია წვდომა ინდექსის მიხედვით.
      • ArrayList: დინამიური მასივი. კარგია სწრაფი წვდომისთვის ინდექსის მიხედვით და ბოლოს დამატებისთვის. ნელია შუაში დამატებისა/წაშლისთვის.
      • LinkedList: ორმაგად დაკავშირებული სია. კარგია დასაწყისში ან ბოლოს დამატებისა/წაშლისთვის. ნელია ინდექსის მიხედვით წვდომისთვის.
      • Vector: ArrayList-ის სინქრონიზებული ვერსია. ითვლება მოძველედ.
      • Stack: მემკვიდრეობით იღებს Vector-დან, განახორციელებს სტეკის (LIFO) ქცევას.
    • Set: კოლექცია, რომელიც შეიცავს მხოლოდ უნიკალურ ელემენტებს. არ უზრუნველყოფს წესრიგს.
      • HashSet: რეალიზებულია ჰეშ-ტაბლით. ყველაზე სწრაფია დამატების, წაშლის და არსებობის შემოწმებისთვის. არ უზრუნველყოფს წესრიგს.
      • LinkedHashSet: რეალიზებულია როგორც ჰეშ-ტაბლი + დაკავშირებული სია. უზრუნველყოფს დამატების წესს.
      • TreeSet: რეალიზებულია წითელი-შავი ხის საშუალებით. ინახავს ელემენტებს სორტირებულ წესში. ნელა, ვიდრე HashSet, მაგრამ სწრაფია დიაპაზონის ძიებისთვის.
    • Queue: კოლექცია, რომელიც განკუთვნილია ელემენტების შენახვისთვის წინასწარ დამუშავებისთვის (FIFO - პირველი შევიდა, პირველი გამოვიდა).
      • PriorityQueue: ელემენტები ინახება მათი ბუნებრივი წესის ან კომპარატორის მიხედვით. გამოაქვს უმაღლესი პრიორიტეტი.
      • Deque: (ორმხრივი რიგი) მხარდაჭერილია დამატება და წაშლა ორივე მხარიდან.
        • ArrayDeque: მასივზე დაფუძნებული რეალიზაცია. უფრო ეფექტურია ვიდრე LinkedList რიგი/სტეკისთვის.
  • Map: კოლექცია, რომელიც ინახავს კუპარ-ფასი წყვილებს. კლავიშები უნიკალურია.

    • HashMap: რეალიზებულია ჰეშ-ტაბლით. ყველაზე სწრაფია დამატებისა, წაშლის და არსებობის შემოწმებისთვის. არ უზრუნველყოფს წესრიგს.
    • LinkedHashMap: რეალიზებულია როგორც ჰეშ-ტაბლი + დაკავშირებული სია. უზრუნველყოფს დამატების ან წვდომის წესს.
    • TreeMap: რეალიზებულია წითელი-შავი ხის საშუალებით. ინახავს კუპარ-ფასი წყვილებს სორტირებულ წესში კლავიშების მიხედვით. ნელა, ვიდრე HashMap.
    • HashTable: სინქრონიზებული ვერსია HashMap-ის. ითვლება მოძველედ.

არსებობს ასევე მოძველებული კლასები, რომლებიც არ შედის JCF-ში, მაგრამ ხშირად გამოიყენება:

  • Vector
  • Stack
  • Hashtable
  • Enumeration (ინტერფეისი)