JavaPython:Hulk

Allikas: Kursused
Mine navigeerimisribale Mine otsikasti
Java vs Python

Hulk (ingl set) ei sisalda elementide kordusi. Hulk pole järjestatud - elementide küsimine hulgast võib iga kord anda erineva järjestuse. Javas on järjekordselt palju erinevaid hulkasid, Pythoni hulgale kõige analoogne andmetüüp on Javas räsihulk (HashSet), mis kasutab objekti süntaksid. Literaalid puuduvad. Deklareerimine ja loomine näeb välja järgnevalt:

HashSet<type> variable = new HashSet<type>();

Teisi võimalusi:

boolean add(object), boolean remove(object), boolean isEmpty(), boolean contains(object), 
boolean addAll(collection) (union), boolean retainAll(collection) (intersection), 
boolean removeAll(collection) (set difference), boolean containsAll(collection) (subset).

Räsihulk on üks kogumi tüüp. Hulgaga manipuleeritavad tegevused tagastavad kas true, kui hulka muudeti ja false, kui hulka ei muudetud.

Näide

Java Python
<syntaxhighlight lang="java" line="1" >

//hashset HashSet<String> aSet = new HashSet<String>(); aSet.add("aaaa"); aSet.add("bbbb"); aSet.add("cccc"); aSet.add("dddd");

//iterate over set Iterator<String> iterator = aSet.iterator(); while (iterator.hasNext()) {

   System.out.print(iterator.next() + " ");

}

HashSet<String> bSet = new HashSet<String>(); bSet.add("eeee"); bSet.add("ffff"); bSet.add("gggg"); bSet.add("dddd");

//check if bSet is a subset of aSet boolean b = aSet.containsAll(bSet);

//union - transform aSet //into the union of aSet and bSet aSet.addAll(bSet);

//intersection - transforms aSet //into the intersection of aSet and bSet aSet.retainAll(bSet);

//difference - transforms aSet //into the (asymmetric) set difference // of aSet and bSet. aSet.removeAll(bSet); </syntaxhighlight>

<syntaxhighlight lang="python" line="2" >

aSet = set() aSet = set("one")

  1. a set containing three letters
  2. set(['e', 'o', 'n'])

aSet = set(['one', 'two', 'three'])

  1. set(['three', 'two', 'one'])
  2. a set containing three words
  1. iterate over set

for v in aSet:

   print(v)

bSet = set(['three','four', 'five'])

  1. union

cSet = aSet | bSet

  1. set(['four', 'one', 'five', 'three', 'two'])
  1. intersection

dSet = aSet & bSet

  1. find elements in aSet not bSet

eSet = aSet.difference(bSet)

  1. add element

bSet.add("six")

  1. set(['four', 'six', 'five', 'three'])

</syntaxhighlight>