Erinevus lehekülje "JavaPython:Hulk" redaktsioonide vahel

Allikas: Kursused
Mine navigeerimisribale Mine otsikasti
(Uus lehekülg: '{{JavaPython}}')
 
 
(ei näidata sama kasutaja 4 vahepealset redaktsiooni)
1. rida: 1. rida:
{{JavaPython}}
+
{{JavaPython-sisukord}}
 +
 
 +
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 <b>räsihulk (HashSet)</b>, mis kasutab objekti süntaksid. Literaalid puuduvad. Deklareerimine ja loomine näeb välja järgnevalt:
 +
<pre>HashSet<type> variable = new HashSet<type>();</pre>
 +
 
 +
Teisi võimalusi:
 +
<pre>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).</pre>
 +
 
 +
<b>Räsihulk</b> on üks kogumi tüüp. Hulgaga manipuleeritavad tegevused tagastavad kas <b>true</b>, kui hulka muudeti ja  <b>false</b>, 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")
 +
# a set containing three letters
 +
#set(['e', 'o', 'n'])
 +
 +
aSet = set(['one', 'two', 'three'])
 +
#set(['three', 'two', 'one'])
 +
#a set containing three words
 +
 +
#iterate over set
 +
for v in aSet:
 +
    print(v)
 +
 +
bSet = set(['three','four', 'five'])
 +
 +
#union
 +
cSet = aSet | bSet
 +
#set(['four', 'one', 'five', 'three', 'two'])
 +
 +
#intersection
 +
dSet = aSet & bSet
 +
 +
#find elements in aSet not bSet
 +
eSet = aSet.difference(bSet)
 +
 +
#add element
 +
bSet.add("six")
 +
#set(['four', 'six', 'five', 'three'])
 +
</syntaxhighlight>
 +
|}

Viimane redaktsioon: 4. veebruar 2016, kell 10:24

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>