CodeGym/Java Blog/Random/Ang Java Set bilang isang Interface
John Squirrels
Antas
San Francisco

Ang Java Set bilang isang Interface

Nai-publish sa grupo
Ang isang set ay isang koleksyon lamang ng mga natatanging bagay. Ang kakaiba ay nangangahulugan na walang dalawang bagay ang maaaring magkaroon ng parehong (mga) halaga. Depende sa pagpapatupad ng set, maaari itong i-order o hindi. Ang hanay ng Java, bilang isang Abstract Data Type (ADT), ay may ilang mga pangunahing operasyon (kung saan ang T ay kumakatawan sa anumang uri ng data eg int, String, o anumang bagay ng klase): Ang Java Set bilang Interface - 1
  • boolean add(T item): nagbabalik ng true kung matagumpay na naidagdag ang item sa set, at false kung nasa set na ang item.
  • boolean remove(T item): nagbabalik ng true kung ang item ay matagumpay na naalis mula sa set at false kung hindi man (kung ang item ay wala sa set).
  • boolean contains(T item): nagbabalik ng true kung ang item ay nasa set at false kung hindi.
  • boolean isEmpty(): nagbabalik ng true kung ang set ay walang laman at false kung hindi.
Ang mga set sa Java ay may medyo maliwanag na mga lagda ng pag-andar (tulad ng nararapat). Kung magdaragdag ka ng dalawang magkaparehong item sa isang set, ang unang idinagdag na item lang ang mapupunta sa set. Ang lahat ng kasunod na pagtatangka na magdagdag ng parehong item ay hindi papansinin maliban kung ang item ay unang inalis. Isa sa mga pinakakaraniwang ginagamit na operasyon ng hanay ay ang pagsuri kung ang isang item ay nasa loob ng isang ibinigay na hanay. Ang contains()function ay nagbibigay ng isang mahusay na runtime para dito: O(1) o O(log n) time complexity depende sa kung ang ginamit na pagpapatupad ay a HashSeto aTreeSet, ayon sa pagkakabanggit. Kaya ano ang maaaring gamitin ng isang set? Kung sakaling kailanganin mong subaybayan ang maraming natatanging bagay--gaya ng mga ID, pangalan, o iba pang natatanging pagkakakilanlan--at madalas na suriin kung mayroong isang item sa naturang koleksyon, kung gayon ang isang set ay malamang na isang mahusay na pagpipilian. Narito ang isang halimbawa ng kaso ng paggamit ng isang set: Isipin na mayroon kang isang listahan ng Studentmga bagay na kumakatawan sa lahat ng mga mag-aaral sa isang partikular na klase. Ang bawat isa Studentay maaaring may natatanging pangalan (string) at grado (int) para sa klase na ito. Kung gusto mong mag-refer ng isang listahan ng lahat ng A na mag-aaral (grado >=90) nang madalas, kung gayon ay nakakapagod na mag-ikot sa listahang ito at suriin ang bawat marka ng bawat mag-aaral. Sa halip, maaari kang gumamit ng mga HashSetstring na sumusubaybay sa lahat ng A na mag-aaral sa klase, tulad nito:
  • Sa tuwing maa-update ang mga marka ng mga mag-aaral, maaari mong tingnan lamang kung ang bagong grado ng Estudyante ay mas malaki o katumbas ng 90 o hindi.
    • Kung gayon, idagdag sila sa set ng A na ginagamit ng mga mag-aaraladd()
      • Kung isa na silang A student, binabalewala lang ang operasyong ito.
    • Kung hindi, pagkatapos ay alisin ang mga ito mula sa hanay ng A na ginagamit ng mga mag-aaralremove()
      • Kung hindi sila A na estudyante sa puntong ito, binabalewala lang ang operasyong ito.
Sa ganitong sistema, palagi kang magkakaroon ng up-to-date na set ng lahat ng 'A' na estudyante sa iyong klase. Kung gusto mong tingnan kung maganda ang pasok ni Johnny Appleseed sa iyong klase, madali mong magagawa ito sa pamamagitan ng pagtawag contains(“Johnny Appleseed”)sa set. Siyempre, isa lamang itong halimbawa ng use case para sa isang set, at ang partikular na problemang ito ng pagsubaybay sa mga A na mag-aaral ay maaaring malutas sa ibang mga paraan.

Mga Pagpapatupad: Mga Halimbawa ng HashSet sa Java at Java TreeSet

Parehong ang HashSetsa Java at ang TreeSetsa Java ay nasa java.utils package. Maaari mong i-import ang mga ito tulad ng:
// imports everything from Java's util package, including HashSet and TreeSet
import java.util.*;
o
import java.util.HashSet; // imports only the Java HashSet
import java.util.TreeSet; // imports only the Java TreeSet
Ang pangunahing pagkakaiba sa pagitan ng Java HashSetat Java TreeSetay ang TreeSetpinagsunod-sunod, samantalang ang HashSethindi. Ito ang dahilan kung bakit ang TreeSetmay O(log n) time complexity para sa mga pangunahing operasyon, samantalang HashSetmay O(1) o pare-parehong time complexity; dapat panatilihin ang TreeSetkaayusan sa lahat ng oras. Bilang karagdagan sa mga pangunahing hanay ng mga operasyon na nabanggit kanina, ang parehong HashSetat TreeSetsa Java ay may ilang iba pang mga kapaki-pakinabang na function:
  • void clear(): nililimas ang hanay ng lahat ng bagay.
  • int size(): ibinabalik ang bilang ng mga bagay sa set.
  • Object clone(): nagbabalik ng mababaw na kopya ng set.
  • Iterator iterator(): nagbabalik ng isang iterator sa set, simula sa unang bagay.
Maaari mong isipin ang paghahanap ng mga gamit para sa mga function na ito sa halimbawa ng "listahan ng mga A mag-aaral": maaari kang tumawag size()kung gusto mong makita kung ilang 'A' na mga mag-aaral ang mayroon ka, o clear()kung gusto mong i-clear ang listahan sa pagtatapos ng semestre. Maaari mong gamitin clone()upang gumawa at panatilihin ang isang clone ng listahan ng A na mga mag-aaral sa isang partikular na punto ng oras, tulad ng sa panahon ng mga ulat sa midterm (sa ganitong paraan ang clone ay hindi mananatiling up-to-date kasama ang orihinal).

Halimbawa ng Java HashSet

Narito ang isang maikling halimbawa ng a HashSetng Strings na ginagamit sa Java:
import java.util.HashSet;
class HashSetDemo {
    public static void main(String[] args)
    {
	  // create a HashSet of Strings
        HashSet<String> hs = new HashSet<String>();

        // Add elements using the add() method
        hs.add("Collin");
	  hs.add("Bob");
 	  hs.add("Abigail");

        // Duplicates will ignored; this statement is useless
        hs.add("Collin");


        System.out.println(hs);
	  System.out.println("Bob is in the set (T/F): " + hs.contains("Bob"));
  System.out.println("Max is in the set (T/F): " + hs.contains("Max"));


    }
}
Output: --------
[Collin, Bob, Abigail]
Bob is in the set (T/F): true
Max is in the set (T/F): false

Halimbawa ng Java TreeSet

Ang halimbawa ng Java set ay maaaring makatulong sa iyo na maunawaan ang teorya. Narito ang maikling halimbawa ng a TreeSetng Strings na ginagamit sa Java:
import java.util.TreeSet;
class TreeSetDemo {
    public static void main(String[] args)
    {
	  // create a TreeSet of Strings
        TreeSet<String> ts = new TreeSet<String>();

        // Add elements using the add() method.
        ts.add("Collin");
	  ts.add("Bob");
 	  ts.add("Abigail");

        // Duplicates will ignored; this statement is useless
        ts.add("Collin");

        // printing the set prints the names in alphabetical order!
        System.out.println(ts);

	  System.out.println("Bob is in the set (T/F): " + ts.contains("Bob"));
  System.out.println("Max is in the set (T/F): " + ts.contains("Max"));
  System.out.println("Size of the set: " + ts.size());
 	  ts.clear();
	  System.out.println("Size of the set after clear(): " + ts.size());


    }
}
Output: -------
[Abigail, Bob, Collin]
Bob is in the set (T/F): true
Max is in the set (T/F): false
Size of the set: 3
Size of the set after clear(): 0
Iyon lang! Sana nakatulong ito 😊
Mga komento
  • Sikat
  • Bago
  • Luma
Dapat kang naka-sign in upang mag-iwan ng komento
Wala pang komento ang page na ito