Subtrees hinzugefügt

This commit is contained in:
Dirk Zechnall 2025-01-05 21:22:02 +01:00
parent 155d0786a6
commit 3cc08a2004
443 changed files with 131415 additions and 0 deletions

7
Quellcodes/Alg_DS_Set/.gitignore vendored Normal file
View file

@ -0,0 +1,7 @@
**/*.sh
**/*.class
**/*.ctxt
repo.adoc
repo_subtree.adoc
/alt
/hide

Binary file not shown.

View file

@ -0,0 +1,3 @@
Quelle: https://github.com/afeinberg/sizeof
GNU Public License 2.0
Modifikationen von Rainer Helfrich

View file

@ -0,0 +1,124 @@
import java.util.*;
import net.sourceforge.sizeof.*;
import java.io.*;
import java.lang.reflect.*;
/**
* Testet Set-Varianten auf ihre Effizenz
*
* @author Rainer Helfrich
* @version November 2020
*/
public class BenchmarkBase
{
protected Set theSet;
Random zufallszahlen;
protected BenchmarkBase()
{
zufallszahlen = new Random();
}
protected void init(Class c) throws Exception
{
theSet = (Set)c.newInstance();
}
/**
* Wird benötigt, um in einem neuen Prozess den Speichertest durchzuführen.
* Sollte nicht direkt aufgerufen werden.
*/
public static void main(String[] args)
{
try
{
int anzahl = Integer.parseInt(args[0]);
Class c = Class.forName(args[1]);
MeinBenchmark b = new MeinBenchmark();
b.init(c);
Method m = b.getClass().getMethod(args[2], new Class[]{int.class});
m.invoke(b, new Object[]{anzahl});
System.out.println("@"+SizeOf.deepSizeOf((Object)b.theSet)+"@");
}
catch(Exception x)
{
System.out.println(x.getMessage());
}
}
/**
* Führt einen Laufzeittest aus. Wiederholt den Test 100 mal, um Ausreißer zu vermeiden.
* Sollte nicht direkt aufgerufen werden.
* @param typ Die Unterklasse von Set, die getestet werden soll
* @param methode Der Name der Methode in der Klasse MeinBenchmark, die zum Testen ausgeführt werden soll
* @param anzahl Ein Parameter für die Methode namens "methode", der z.B. die Anzahl der Operationen steuert
* @return Die Laufzeit des Tests in Mikrosekunden (µs)
*/
protected static int laufzeitTest(String typ, String methode, int anzahl)
{
try
{
Class c = Class.forName(typ);
MeinBenchmark b = new MeinBenchmark();
final int DURCHGAENGE = 100;
long totalTime = 0;
for (int i = 0; i < DURCHGAENGE; i++)
{
b.init(c);
Method m = b.getClass().getMethod(methode, new Class[]{int.class});
long vorher = System.nanoTime();
m.invoke(b, new Object[]{anzahl});
long nachher = System.nanoTime();
totalTime += (nachher - vorher) / 1000;
}
return (int)(totalTime / DURCHGAENGE);
}
catch(Exception x)
{
System.out.println(x.getMessage());
}
return -1;
}
/**
* Führt einen Speichertest aus. Sollte nicht direkt aufgerufen werden.
* @param typ Die Unterklasse von Set, die getestet werden soll
* @param methode Der Name der Methode in der Klasse MeinBenchmark, die zum Testen ausgeführt werden soll
* @param anzahl Ein Parameter für die Methode namens "methode", der z.B. die Anzahl der Operationen steuert
* @return Die Größe der Set in Bytes, nachdem die Testmethode ausgeführt wurde
*/
protected static int speicherTest(String typ, String methode, int anzahl)
{
try
{
Process process = new ProcessBuilder("java","-javaagent:./+libs/SizeOf.jar", MeinBenchmark.class.getName(), ""+anzahl, typ, methode).start();
InputStream is = process.getInputStream();
InputStreamReader isr = new InputStreamReader(is);
BufferedReader br = new BufferedReader(isr);
String line;
StringBuilder sb = new StringBuilder();
while ((line = br.readLine()) != null) {
sb.append(line);
}
String strOut = sb.toString();
int idx = strOut.indexOf("@");
if (idx < 0)
{
throw new Exception("Fehler: Ungültige Ausgabe:\n"+strOut);
}
int idx2 = strOut.indexOf("@", idx+1);
if (idx2 < 0)
{
throw new Exception("Fehler: Ungültige Ausgabe:\n"+strOut);
}
int n = Integer.parseInt(strOut.substring(idx+1, idx2));
return n;
}
catch(Exception x)
{
System.out.println(x.getMessage());
}
return -1;
}
}

View file

@ -0,0 +1,59 @@
/**
* Führt Leistungstests mit verschiedenen Set-Implementationen aus
*
* @author Rainer Helfrich
* @version November 2020
*/
public class MeinBenchmark extends BenchmarkBase
{
//# Die Klassen SetVarianteA, SetVarianteB und SetVarianteC sind drei verschiedene Implementationen
//# des ADTs Set: Mit ArrayList, mit Bitvektor und als Hashtable.
//# Sie verhalten sich logisch gleich, zeigen aber verschiedene Eigenschaften in Bezug auf
//# Laufzeit und Speicherbedarf (vgl. Unterricht).
//# Konstruieren Sie Testfälle, mit denen man den Unterschied der Implementationsvarianten
//# erkennen kann.
//# Rufen Sie die Methoden speicherTestAusfuehren bzw. laufzeitTestAusfuehren auf,
//# um die Messergebnisse zu sehen.
public void meinTest(int anzahl)
{
//# TODO: Konstruieren Sie einen Testfall, um herauszufinden, welche Implementation verwendet wird.
//# Der Parameter anzahl entspricht der Variablen anzahl in der Methode speicherTestAusfuehren bzw. laufzeitTestAusfuehren
//# Sie können die Methoden des Objekts theSet (ein Set-Objekt) verwenden.
for (int i = 0; i < anzahl; i++)
{
theSet.einfuegen(i);
}
}
/**
* Führt einen Speichertest mit z.B. 100 Elementen aus und gibt das Ergebnis auf der Konsole aus.
*/
public static void speicherTestAusfuehren()
{
int anzahl = 100;
String methodenName = "meinTest";
// Die Variable methodenName muss einer statischen Methode in dieser Klasse entsprechen
int sizeA = speicherTest("SetVarianteA", methodenName, anzahl);
int sizeB = speicherTest("SetVarianteB", methodenName, anzahl);
int sizeC = speicherTest("SetVarianteC", methodenName, anzahl);
System.out.println(String.format("%d Zahlen; SetVarianteA: %d Bytes; SetVarianteB: %d Bytes; SetVarianteC: %d Bytes",
anzahl, sizeA, sizeB, sizeC));
}
/**
* Führt einen Laufzeittest mit z.B. 1000 Elementen aus und gibt das Ergebnis auf der Konsole aus.
*/
public static void laufzeitTestAusfuehren()
{
int anzahl = 1000;
String methodenName = "meinTest";
// Die Variable methodenName muss einer statischen Methode in dieser Klasse entsprechen
long timeA = laufzeitTest("SetVarianteA", methodenName, anzahl);
long timeB = laufzeitTest("SetVarianteB", methodenName, anzahl);
long timeC = laufzeitTest("SetVarianteC", methodenName, anzahl);
System.out.println(String.format("%d Zahlen; SetVarianteA: %d µs; SetVarianteB: %d µs; SetVarianteC: %d µs",
anzahl, timeA, timeB, timeC));
}
}

View file

@ -0,0 +1,5 @@
PROJEKTBEZEICHNUNG: Set-Benchmark
PROJEKTZWECK: Konstruieren Sie einen Benchmark, um herauszufinden, um welche Implementation es sich bei einer Set handelt.
VERSION oder DATUM: November 2020
WIE IST DAS PROJEKT ZU STARTEN: Nachdem Sie in der Methode meinTest der Klasse MeinBenchmark einen Test definiert haben, rufen Sie eine der statischen Methoden speicherTestAusfuehren() oder laufzeitTestAusfuehren() auf.
AUTOR(EN): Rainer Helfrich, ZPG Informatik

View file

@ -0,0 +1,307 @@
<!DOCTYPE HTML>
<!-- NewPage -->
<html lang="de">
<head>
<!-- Generated by javadoc (11.0.2) on Mon Jan 11 13:04:17 CET 2021 -->
<title>BenchmarkBase</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="dc.created" content="2021-01-11">
<link rel="stylesheet" type="text/css" href="stylesheet.css" title="Style">
<script type="text/javascript" src="script.js"></script>
</head>
<body>
<script type="text/javascript"><!--
try {
if (location.href.indexOf('is-external=true') == -1) {
parent.document.title="BenchmarkBase";
}
}
catch(err) {
}
//-->
var data = {"i0":10,"i1":9,"i2":9,"i3":9};
var tabs = {65535:["t0","All Methods"],1:["t1","Static Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
var altColor = "altColor";
var rowColor = "rowColor";
var tableTab = "tableTab";
var activeTableTab = "activeTableTab";
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<!-- ======== START OF CLASS DATA ======== -->
<main role="main">
<div class="header">
<h2 title="Class BenchmarkBase" class="title">Class BenchmarkBase</h2>
</div>
<div class="contentContainer">
<ul class="inheritance">
<li>java.lang.Object</li>
<li>
<ul class="inheritance">
<li>BenchmarkBase</li>
</ul>
</li>
</ul>
<div class="description">
<ul class="blockList">
<li class="blockList">
<hr>
<pre>public class <span class="typeNameLabel">BenchmarkBase</span>
extends java.lang.Object</pre>
<div class="block">Testet Set-Varianten auf ihre Effizenz</div>
<dl>
<dt><span class="simpleTagLabel">Version:</span></dt>
<dd>November 2020</dd>
<dt><span class="simpleTagLabel">Author:</span></dt>
<dd>Rainer Helfrich</dd>
</dl>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- =========== FIELD SUMMARY =========== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="field.summary">
<!-- -->
</a>
<h3>Field Summary</h3>
<table class="memberSummary">
<caption><span>Fields</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colSecond" scope="col">Field</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tr class="altColor">
<td class="colFirst"><code>protected Set</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#theSet">theSet</a></span></code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>(package private) java.util.Random</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#zufallszahlen">zufallszahlen</a></span></code></th>
<td class="colLast">&nbsp;</td>
</tr>
</table>
</li>
</ul>
</section>
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="constructor.summary">
<!-- -->
</a>
<h3>Constructor Summary</h3>
<table class="memberSummary">
<caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Modifier</th>
<th class="colSecond" scope="col">Constructor</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tr class="altColor">
<td class="colFirst"><code>protected </code></td>
<th class="colConstructorName" scope="row"><code><span class="memberNameLink"><a href="#%3Cinit%3E()">BenchmarkBase</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
</table>
</li>
</ul>
</section>
<!-- ========== METHOD SUMMARY =========== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="method.summary">
<!-- -->
</a>
<h3>Method Summary</h3>
<table class="memberSummary">
<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t1" class="tableTab"><span><a href="javascript:show(1);">Static Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colSecond" scope="col">Method</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tr id="i0" class="altColor">
<td class="colFirst"><code>protected void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#init(java.lang.Class)">init</a></span>&#8203;(java.lang.Class&nbsp;c)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i1" class="rowColor">
<td class="colFirst"><code>protected static int</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#laufzeitTest(java.lang.String,java.lang.String,int)">laufzeitTest</a></span>&#8203;(java.lang.String&nbsp;typ,
java.lang.String&nbsp;methode,
int&nbsp;anzahl)</code></th>
<td class="colLast">
<div class="block">Führt einen Laufzeittest aus.</div>
</td>
</tr>
<tr id="i2" class="altColor">
<td class="colFirst"><code>static void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#main(java.lang.String%5B%5D)">main</a></span>&#8203;(java.lang.String[]&nbsp;args)</code></th>
<td class="colLast">
<div class="block">Wird benötigt, um in einem neuen Prozess den Speichertest durchzuführen.</div>
</td>
</tr>
<tr id="i3" class="rowColor">
<td class="colFirst"><code>protected static int</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#speicherTest(java.lang.String,java.lang.String,int)">speicherTest</a></span>&#8203;(java.lang.String&nbsp;typ,
java.lang.String&nbsp;methode,
int&nbsp;anzahl)</code></th>
<td class="colLast">
<div class="block">Führt einen Speichertest aus.</div>
</td>
</tr>
</table>
<ul class="blockList">
<li class="blockList"><a id="methods.inherited.from.class.java.lang.Object">
<!-- -->
</a>
<h3>Methods inherited from class&nbsp;java.lang.Object</h3>
<code>clone, equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</code></li>
</ul>
</li>
</ul>
</section>
</li>
</ul>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">
<!-- ============ FIELD DETAIL =========== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="field.detail">
<!-- -->
</a>
<h3>Field Detail</h3>
<a id="theSet">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>theSet</h4>
<pre>protected&nbsp;Set theSet</pre>
</li>
</ul>
<a id="zufallszahlen">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>zufallszahlen</h4>
<pre>java.util.Random zufallszahlen</pre>
</li>
</ul>
</li>
</ul>
</section>
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="constructor.detail">
<!-- -->
</a>
<h3>Constructor Detail</h3>
<a id="&lt;init&gt;()">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>BenchmarkBase</h4>
<pre>protected&nbsp;BenchmarkBase()</pre>
</li>
</ul>
</li>
</ul>
</section>
<!-- ============ METHOD DETAIL ========== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="method.detail">
<!-- -->
</a>
<h3>Method Detail</h3>
<a id="init(java.lang.Class)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>init</h4>
<pre class="methodSignature">protected&nbsp;void&nbsp;init&#8203;(java.lang.Class&nbsp;c)
throws java.lang.Exception</pre>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.Exception</code></dd>
</dl>
</li>
</ul>
<a id="main(java.lang.String[])">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>main</h4>
<pre class="methodSignature">public static&nbsp;void&nbsp;main&#8203;(java.lang.String[]&nbsp;args)</pre>
<div class="block">Wird benötigt, um in einem neuen Prozess den Speichertest durchzuführen.
Sollte nicht direkt aufgerufen werden.</div>
</li>
</ul>
<a id="laufzeitTest(java.lang.String,java.lang.String,int)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>laufzeitTest</h4>
<pre class="methodSignature">protected static&nbsp;int&nbsp;laufzeitTest&#8203;(java.lang.String&nbsp;typ,
java.lang.String&nbsp;methode,
int&nbsp;anzahl)</pre>
<div class="block">Führt einen Laufzeittest aus. Wiederholt den Test 100 mal, um Ausreißer zu vermeiden.
Sollte nicht direkt aufgerufen werden.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>typ</code> - Die Unterklasse von Set, die getestet werden soll</dd>
<dd><code>methode</code> - Der Name der Methode in der Klasse MeinBenchmark, die zum Testen ausgeführt werden soll</dd>
<dd><code>anzahl</code> - Ein Parameter für die Methode namens "methode", der z.B. die Anzahl der Operationen steuert</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>Die Laufzeit des Tests in Mikrosekunden (µs)</dd>
</dl>
</li>
</ul>
<a id="speicherTest(java.lang.String,java.lang.String,int)">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>speicherTest</h4>
<pre class="methodSignature">protected static&nbsp;int&nbsp;speicherTest&#8203;(java.lang.String&nbsp;typ,
java.lang.String&nbsp;methode,
int&nbsp;anzahl)</pre>
<div class="block">Führt einen Speichertest aus. Sollte nicht direkt aufgerufen werden.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>typ</code> - Die Unterklasse von Set, die getestet werden soll</dd>
<dd><code>methode</code> - Der Name der Methode in der Klasse MeinBenchmark, die zum Testen ausgeführt werden soll</dd>
<dd><code>anzahl</code> - Ein Parameter für die Methode namens "methode", der z.B. die Anzahl der Operationen steuert</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>Die Größe der Set in Bytes, nachdem die Testmethode ausgeführt wurde</dd>
</dl>
</li>
</ul>
</li>
</ul>
</section>
</li>
</ul>
</div>
</div>
</main>
<!-- ========= END OF CLASS DATA ========= -->
</body>
</html>

View file

@ -0,0 +1,230 @@
<!DOCTYPE HTML>
<!-- NewPage -->
<html lang="de">
<head>
<!-- Generated by javadoc (11.0.2) on Mon Jan 11 13:04:17 CET 2021 -->
<title>MeinBenchmark</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="dc.created" content="2021-01-11">
<link rel="stylesheet" type="text/css" href="stylesheet.css" title="Style">
<script type="text/javascript" src="script.js"></script>
</head>
<body>
<script type="text/javascript"><!--
try {
if (location.href.indexOf('is-external=true') == -1) {
parent.document.title="MeinBenchmark";
}
}
catch(err) {
}
//-->
var data = {"i0":9,"i1":10,"i2":9};
var tabs = {65535:["t0","All Methods"],1:["t1","Static Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
var altColor = "altColor";
var rowColor = "rowColor";
var tableTab = "tableTab";
var activeTableTab = "activeTableTab";
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<!-- ======== START OF CLASS DATA ======== -->
<main role="main">
<div class="header">
<h2 title="Class MeinBenchmark" class="title">Class MeinBenchmark</h2>
</div>
<div class="contentContainer">
<ul class="inheritance">
<li>java.lang.Object</li>
<li>
<ul class="inheritance">
<li>BenchmarkBase</li>
<li>
<ul class="inheritance">
<li>MeinBenchmark</li>
</ul>
</li>
</ul>
</li>
</ul>
<div class="description">
<ul class="blockList">
<li class="blockList">
<hr>
<pre>public class <span class="typeNameLabel">MeinBenchmark</span>
extends BenchmarkBase</pre>
<div class="block">Führt Leistungstests mit verschiedenen Set-Implementationen aus</div>
<dl>
<dt><span class="simpleTagLabel">Version:</span></dt>
<dd>November 2020</dd>
<dt><span class="simpleTagLabel">Author:</span></dt>
<dd>Rainer Helfrich</dd>
</dl>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- =========== FIELD SUMMARY =========== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="field.summary">
<!-- -->
</a>
<h3>Field Summary</h3>
<ul class="blockList">
<li class="blockList"><a id="fields.inherited.from.class.BenchmarkBase">
<!-- -->
</a>
<h3>Fields inherited from class&nbsp;BenchmarkBase</h3>
<code>theSet, zufallszahlen</code></li>
</ul>
</li>
</ul>
</section>
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="constructor.summary">
<!-- -->
</a>
<h3>Constructor Summary</h3>
<table class="memberSummary">
<caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Constructor</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tr class="altColor">
<th class="colConstructorName" scope="row"><code><span class="memberNameLink"><a href="#%3Cinit%3E()">MeinBenchmark</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
</table>
</li>
</ul>
</section>
<!-- ========== METHOD SUMMARY =========== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="method.summary">
<!-- -->
</a>
<h3>Method Summary</h3>
<table class="memberSummary">
<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t1" class="tableTab"><span><a href="javascript:show(1);">Static Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colSecond" scope="col">Method</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tr id="i0" class="altColor">
<td class="colFirst"><code>static void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#laufzeitTestAusfuehren()">laufzeitTestAusfuehren</a></span>()</code></th>
<td class="colLast">
<div class="block">Führt einen Laufzeittest mit 1000 Elementen aus und gibt das Ergebnis auf der Konsole aus.</div>
</td>
</tr>
<tr id="i1" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#meinTest(int)">meinTest</a></span>&#8203;(int&nbsp;n)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i2" class="altColor">
<td class="colFirst"><code>static void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#speicherTestAusfuehren()">speicherTestAusfuehren</a></span>()</code></th>
<td class="colLast">
<div class="block">Führt einen Speichertest mit 100 Elementen aus und gibt das Ergebnis auf der Konsole aus.</div>
</td>
</tr>
</table>
<ul class="blockList">
<li class="blockList"><a id="methods.inherited.from.class.BenchmarkBase">
<!-- -->
</a>
<h3>Methods inherited from class&nbsp;BenchmarkBase</h3>
<code>init, laufzeitTest, main, speicherTest</code></li>
</ul>
<ul class="blockList">
<li class="blockList"><a id="methods.inherited.from.class.java.lang.Object">
<!-- -->
</a>
<h3>Methods inherited from class&nbsp;java.lang.Object</h3>
<code>clone, equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</code></li>
</ul>
</li>
</ul>
</section>
</li>
</ul>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="constructor.detail">
<!-- -->
</a>
<h3>Constructor Detail</h3>
<a id="&lt;init&gt;()">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>MeinBenchmark</h4>
<pre>public&nbsp;MeinBenchmark()</pre>
</li>
</ul>
</li>
</ul>
</section>
<!-- ============ METHOD DETAIL ========== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="method.detail">
<!-- -->
</a>
<h3>Method Detail</h3>
<a id="meinTest(int)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>meinTest</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;meinTest&#8203;(int&nbsp;n)</pre>
</li>
</ul>
<a id="speicherTestAusfuehren()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>speicherTestAusfuehren</h4>
<pre class="methodSignature">public static&nbsp;void&nbsp;speicherTestAusfuehren()</pre>
<div class="block">Führt einen Speichertest mit 100 Elementen aus und gibt das Ergebnis auf der Konsole aus.</div>
</li>
</ul>
<a id="laufzeitTestAusfuehren()">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>laufzeitTestAusfuehren</h4>
<pre class="methodSignature">public static&nbsp;void&nbsp;laufzeitTestAusfuehren()</pre>
<div class="block">Führt einen Laufzeittest mit 1000 Elementen aus und gibt das Ergebnis auf der Konsole aus.</div>
</li>
</ul>
</li>
</ul>
</section>
</li>
</ul>
</div>
</div>
</main>
<!-- ========= END OF CLASS DATA ========= -->
</body>
</html>

View file

@ -0,0 +1,410 @@
<!DOCTYPE HTML>
<!-- NewPage -->
<html lang="de">
<head>
<!-- Generated by javadoc (11.0.2) on Mon Jan 11 13:04:17 CET 2021 -->
<title>Set</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="dc.created" content="2021-01-11">
<link rel="stylesheet" type="text/css" href="stylesheet.css" title="Style">
<script type="text/javascript" src="script.js"></script>
</head>
<body>
<script type="text/javascript"><!--
try {
if (location.href.indexOf('is-external=true') == -1) {
parent.document.title="Set";
}
}
catch(err) {
}
//-->
var data = {"i0":6,"i1":6,"i2":6,"i3":6,"i4":6,"i5":6,"i6":10,"i7":6,"i8":6,"i9":10,"i10":6,"i11":6};
var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],4:["t3","Abstract Methods"],8:["t4","Concrete Methods"]};
var altColor = "altColor";
var rowColor = "rowColor";
var tableTab = "tableTab";
var activeTableTab = "activeTableTab";
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<!-- ======== START OF CLASS DATA ======== -->
<main role="main">
<div class="header">
<h2 title="Class Set" class="title">Class Set</h2>
</div>
<div class="contentContainer">
<ul class="inheritance">
<li>java.lang.Object</li>
<li>
<ul class="inheritance">
<li>Set</li>
</ul>
</li>
</ul>
<div class="description">
<ul class="blockList">
<li class="blockList">
<hr>
<pre>public abstract class <span class="typeNameLabel">Set</span>
extends java.lang.Object</pre>
<div class="block">Schnittstelle des ADTs Set</div>
<dl>
<dt><span class="simpleTagLabel">Version:</span></dt>
<dd>26.9.2020</dd>
<dt><span class="simpleTagLabel">Author:</span></dt>
<dd>Rainer Helfrich</dd>
</dl>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="constructor.summary">
<!-- -->
</a>
<h3>Constructor Summary</h3>
<table class="memberSummary">
<caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Constructor</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tr class="altColor">
<th class="colConstructorName" scope="row"><code><span class="memberNameLink"><a href="#%3Cinit%3E()">Set</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
</table>
</li>
</ul>
</section>
<!-- ========== METHOD SUMMARY =========== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="method.summary">
<!-- -->
</a>
<h3>Method Summary</h3>
<table class="memberSummary">
<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t3" class="tableTab"><span><a href="javascript:show(4);">Abstract Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colSecond" scope="col">Method</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tr id="i0" class="altColor">
<td class="colFirst"><code>protected abstract int[]</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#alsArray()">alsArray</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i1" class="rowColor">
<td class="colFirst"><code>abstract int</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#anzahl()">anzahl</a></span>()</code></th>
<td class="colLast">
<div class="block">Gibt die Mächtigkeit der Menge zurück</div>
</td>
</tr>
<tr id="i2" class="altColor">
<td class="colFirst"><code>abstract <a href="Set.html" title="class in &lt;Unnamed&gt;">Set</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#differenz(Set)">differenz</a></span>&#8203;(<a href="Set.html" title="class in &lt;Unnamed&gt;">Set</a>&nbsp;s)</code></th>
<td class="colLast">
<div class="block">Bestimmt die Differenzmenge der Menge selbst und der Menge s.</div>
</td>
</tr>
<tr id="i3" class="rowColor">
<td class="colFirst"><code>abstract void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#einfuegen(int)">einfuegen</a></span>&#8203;(int&nbsp;wert)</code></th>
<td class="colLast">
<div class="block">Fügt einen neuen Wert in die Menge ein, falls er nicht bereits enthalten ist.</div>
</td>
</tr>
<tr id="i4" class="altColor">
<td class="colFirst"><code>abstract void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#entfernen(int)">entfernen</a></span>&#8203;(int&nbsp;wert)</code></th>
<td class="colLast">
<div class="block">Entfernt einen Wert aus der Menge, falls er enthalten ist.</div>
</td>
</tr>
<tr id="i5" class="rowColor">
<td class="colFirst"><code>abstract boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#enthaelt(int)">enthaelt</a></span>&#8203;(int&nbsp;wert)</code></th>
<td class="colLast">
<div class="block">Gibt zurück, ob ein bestimmter Wert in der Menge enthalten ist.</div>
</td>
</tr>
<tr id="i6" class="altColor">
<td class="colFirst"><code>boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#gleich(Set)">gleich</a></span>&#8203;(<a href="Set.html" title="class in &lt;Unnamed&gt;">Set</a>&nbsp;s)</code></th>
<td class="colLast">
<div class="block">Gibt zurück, ob diese Menge und s die gleichen Elemente enthalten</div>
</td>
</tr>
<tr id="i7" class="rowColor">
<td class="colFirst"><code>abstract boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#istLeer()">istLeer</a></span>()</code></th>
<td class="colLast">
<div class="block">Gibt zurück, ob die Menge kein Element enthält</div>
</td>
</tr>
<tr id="i8" class="altColor">
<td class="colFirst"><code>abstract <a href="Set.html" title="class in &lt;Unnamed&gt;">Set</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#schnittmenge(Set)">schnittmenge</a></span>&#8203;(<a href="Set.html" title="class in &lt;Unnamed&gt;">Set</a>&nbsp;s)</code></th>
<td class="colLast">
<div class="block">Bestimmt die Schnittmenge der Menge selbst und der Menge s.</div>
</td>
</tr>
<tr id="i9" class="rowColor">
<td class="colFirst"><code>java.lang.String</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#toString()">toString</a></span>()</code></th>
<td class="colLast">
<div class="block">Gibt die String-Darstellung der Menge (aufzählende Darstellung) zurück</div>
</td>
</tr>
<tr id="i10" class="altColor">
<td class="colFirst"><code>abstract boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#untermenge(Set)">untermenge</a></span>&#8203;(<a href="Set.html" title="class in &lt;Unnamed&gt;">Set</a>&nbsp;s)</code></th>
<td class="colLast">
<div class="block">Gibt zurück, ob diese Menge eine Untermenge der Menge s ist.</div>
</td>
</tr>
<tr id="i11" class="rowColor">
<td class="colFirst"><code>abstract <a href="Set.html" title="class in &lt;Unnamed&gt;">Set</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#vereinigungsmenge(Set)">vereinigungsmenge</a></span>&#8203;(<a href="Set.html" title="class in &lt;Unnamed&gt;">Set</a>&nbsp;s)</code></th>
<td class="colLast">
<div class="block">Bestimmt die Vereinigungsmenge der Menge selbst und der Menge s.</div>
</td>
</tr>
</table>
<ul class="blockList">
<li class="blockList"><a id="methods.inherited.from.class.java.lang.Object">
<!-- -->
</a>
<h3>Methods inherited from class&nbsp;java.lang.Object</h3>
<code>clone, equals, getClass, hashCode, notify, notifyAll, wait, wait, wait</code></li>
</ul>
</li>
</ul>
</section>
</li>
</ul>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="constructor.detail">
<!-- -->
</a>
<h3>Constructor Detail</h3>
<a id="&lt;init&gt;()">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>Set</h4>
<pre>public&nbsp;Set()</pre>
</li>
</ul>
</li>
</ul>
</section>
<!-- ============ METHOD DETAIL ========== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="method.detail">
<!-- -->
</a>
<h3>Method Detail</h3>
<a id="einfuegen(int)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>einfuegen</h4>
<pre class="methodSignature">public abstract&nbsp;void&nbsp;einfuegen&#8203;(int&nbsp;wert)</pre>
<div class="block">Fügt einen neuen Wert in die Menge ein, falls er nicht bereits enthalten ist.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>wert</code> - Der einzufügende Wert</dd>
</dl>
</li>
</ul>
<a id="entfernen(int)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>entfernen</h4>
<pre class="methodSignature">public abstract&nbsp;void&nbsp;entfernen&#8203;(int&nbsp;wert)</pre>
<div class="block">Entfernt einen Wert aus der Menge, falls er enthalten ist.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>wert</code> - Der zu entfernende Wert</dd>
</dl>
</li>
</ul>
<a id="enthaelt(int)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>enthaelt</h4>
<pre class="methodSignature">public abstract&nbsp;boolean&nbsp;enthaelt&#8203;(int&nbsp;wert)</pre>
<div class="block">Gibt zurück, ob ein bestimmter Wert in der Menge enthalten ist.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>wert</code> - Der zu suchende Wert</dd>
</dl>
</li>
</ul>
<a id="schnittmenge(Set)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>schnittmenge</h4>
<pre class="methodSignature">public abstract&nbsp;<a href="Set.html" title="class in &lt;Unnamed&gt;">Set</a>&nbsp;schnittmenge&#8203;(<a href="Set.html" title="class in &lt;Unnamed&gt;">Set</a>&nbsp;s)</pre>
<div class="block">Bestimmt die Schnittmenge der Menge selbst und der Menge s.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>s</code> - Die Menge, mit der die Schnittmenge bestimmt werden soll</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>Eine neue Set, die die Schnittmenge der beiden Mengen repräsentiert.</dd>
</dl>
</li>
</ul>
<a id="vereinigungsmenge(Set)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>vereinigungsmenge</h4>
<pre class="methodSignature">public abstract&nbsp;<a href="Set.html" title="class in &lt;Unnamed&gt;">Set</a>&nbsp;vereinigungsmenge&#8203;(<a href="Set.html" title="class in &lt;Unnamed&gt;">Set</a>&nbsp;s)</pre>
<div class="block">Bestimmt die Vereinigungsmenge der Menge selbst und der Menge s.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>s</code> - Die Menge, mit der die Vereinigungsmenge bestimmt werden soll</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>Eine neue Set, die die Vereinigungsmenge der beiden Mengen repräsentiert.</dd>
</dl>
</li>
</ul>
<a id="untermenge(Set)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>untermenge</h4>
<pre class="methodSignature">public abstract&nbsp;boolean&nbsp;untermenge&#8203;(<a href="Set.html" title="class in &lt;Unnamed&gt;">Set</a>&nbsp;s)</pre>
<div class="block">Gibt zurück, ob diese Menge eine Untermenge der Menge s ist.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>s</code> - Die Menge, die geprüft werden soll.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>true, wenn jedes Element dieser Menge in s enthalten ist; false sonst</dd>
</dl>
</li>
</ul>
<a id="differenz(Set)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>differenz</h4>
<pre class="methodSignature">public abstract&nbsp;<a href="Set.html" title="class in &lt;Unnamed&gt;">Set</a>&nbsp;differenz&#8203;(<a href="Set.html" title="class in &lt;Unnamed&gt;">Set</a>&nbsp;s)</pre>
<div class="block">Bestimmt die Differenzmenge der Menge selbst und der Menge s.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>s</code> - Die Menge, die von dieser Menge abgezogen werden soll.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>Eine neue Set, die alle Elemente dieser Menge enthält, die nicht in s enthalten sind.</dd>
</dl>
</li>
</ul>
<a id="anzahl()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>anzahl</h4>
<pre class="methodSignature">public abstract&nbsp;int&nbsp;anzahl()</pre>
<div class="block">Gibt die Mächtigkeit der Menge zurück</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>Die Anzahl der Elemente in der Menge</dd>
</dl>
</li>
</ul>
<a id="istLeer()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>istLeer</h4>
<pre class="methodSignature">public abstract&nbsp;boolean&nbsp;istLeer()</pre>
<div class="block">Gibt zurück, ob die Menge kein Element enthält</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>true, wenn die Menge leer ist; false sonst</dd>
</dl>
</li>
</ul>
<a id="alsArray()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>alsArray</h4>
<pre class="methodSignature">protected abstract&nbsp;int[]&nbsp;alsArray()</pre>
</li>
</ul>
<a id="gleich(Set)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>gleich</h4>
<pre class="methodSignature">public&nbsp;boolean&nbsp;gleich&#8203;(<a href="Set.html" title="class in &lt;Unnamed&gt;">Set</a>&nbsp;s)</pre>
<div class="block">Gibt zurück, ob diese Menge und s die gleichen Elemente enthalten</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>s</code> - Die zu überprüfende Menge</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>true, wenn beide Mengen die gleichen Elemente enthalten; false sonst</dd>
</dl>
</li>
</ul>
<a id="toString()">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>toString</h4>
<pre class="methodSignature">public&nbsp;java.lang.String&nbsp;toString()</pre>
<div class="block">Gibt die String-Darstellung der Menge (aufzählende Darstellung) zurück</div>
<dl>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code>toString</code>&nbsp;in class&nbsp;<code>java.lang.Object</code></dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>Ein String, der alle Elemente der Menge aufzählt.</dd>
</dl>
</li>
</ul>
</li>
</ul>
</section>
</li>
</ul>
</div>
</div>
</main>
<!-- ========= END OF CLASS DATA ========= -->
</body>
</html>

View file

@ -0,0 +1,401 @@
<!DOCTYPE HTML>
<!-- NewPage -->
<html lang="de">
<head>
<!-- Generated by javadoc (11.0.2) on Mon Jan 11 13:04:17 CET 2021 -->
<title>SetVarianteA</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="dc.created" content="2021-01-11">
<link rel="stylesheet" type="text/css" href="stylesheet.css" title="Style">
<script type="text/javascript" src="script.js"></script>
</head>
<body>
<script type="text/javascript"><!--
try {
if (location.href.indexOf('is-external=true') == -1) {
parent.document.title="SetVarianteA";
}
}
catch(err) {
}
//-->
var data = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10,"i7":10,"i8":10,"i9":10};
var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
var altColor = "altColor";
var rowColor = "rowColor";
var tableTab = "tableTab";
var activeTableTab = "activeTableTab";
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<!-- ======== START OF CLASS DATA ======== -->
<main role="main">
<div class="header">
<h2 title="Class SetVarianteA" class="title">Class SetVarianteA</h2>
</div>
<div class="contentContainer">
<ul class="inheritance">
<li>java.lang.Object</li>
<li>
<ul class="inheritance">
<li>Set</li>
<li>
<ul class="inheritance">
<li>SetVarianteA</li>
</ul>
</li>
</ul>
</li>
</ul>
<div class="description">
<ul class="blockList">
<li class="blockList">
<hr>
<pre>public class <span class="typeNameLabel">SetVarianteA</span>
extends Set</pre>
<div class="block">Set-Variante A</div>
<dl>
<dt><span class="simpleTagLabel">Version:</span></dt>
<dd>27.9.2020</dd>
<dt><span class="simpleTagLabel">Author:</span></dt>
<dd>Rainer Helfrich</dd>
</dl>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="constructor.summary">
<!-- -->
</a>
<h3>Constructor Summary</h3>
<table class="memberSummary">
<caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Constructor</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tr class="altColor">
<th class="colConstructorName" scope="row"><code><span class="memberNameLink"><a href="#%3Cinit%3E()">SetVarianteA</a></span>()</code></th>
<td class="colLast">
<div class="block">Erzeugt eine neue leere Set</div>
</td>
</tr>
</table>
</li>
</ul>
</section>
<!-- ========== METHOD SUMMARY =========== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="method.summary">
<!-- -->
</a>
<h3>Method Summary</h3>
<table class="memberSummary">
<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colSecond" scope="col">Method</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tr id="i0" class="altColor">
<td class="colFirst"><code>protected int[]</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#alsArray()">alsArray</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i1" class="rowColor">
<td class="colFirst"><code>int</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#anzahl()">anzahl</a></span>()</code></th>
<td class="colLast">
<div class="block">Gibt die Mächtigkeit der Menge zurück</div>
</td>
</tr>
<tr id="i2" class="altColor">
<td class="colFirst"><code>Set</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#differenz(Set)">differenz</a></span>&#8203;(Set&nbsp;s)</code></th>
<td class="colLast">
<div class="block">Bestimmt die Differenzmenge der Menge selbst und der Menge s.</div>
</td>
</tr>
<tr id="i3" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#einfuegen(int)">einfuegen</a></span>&#8203;(int&nbsp;n)</code></th>
<td class="colLast">
<div class="block">Fügt einen neuen Wert in die Menge ein, falls er nicht bereits enthalten ist.</div>
</td>
</tr>
<tr id="i4" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#entfernen(int)">entfernen</a></span>&#8203;(int&nbsp;n)</code></th>
<td class="colLast">
<div class="block">Entfernt einen Wert aus der Menge, falls er enthalten ist.</div>
</td>
</tr>
<tr id="i5" class="rowColor">
<td class="colFirst"><code>boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#enthaelt(int)">enthaelt</a></span>&#8203;(int&nbsp;n)</code></th>
<td class="colLast">
<div class="block">Gibt zurück, ob ein bestimmter Wert in der Menge enthalten ist.</div>
</td>
</tr>
<tr id="i6" class="altColor">
<td class="colFirst"><code>boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#istLeer()">istLeer</a></span>()</code></th>
<td class="colLast">
<div class="block">Gibt zurück, ob die Menge kein Element enthält</div>
</td>
</tr>
<tr id="i7" class="rowColor">
<td class="colFirst"><code>Set</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#schnittmenge(Set)">schnittmenge</a></span>&#8203;(Set&nbsp;s)</code></th>
<td class="colLast">
<div class="block">Bestimmt die Schnittmenge der Menge selbst und der Menge s.</div>
</td>
</tr>
<tr id="i8" class="altColor">
<td class="colFirst"><code>boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#untermenge(Set)">untermenge</a></span>&#8203;(Set&nbsp;s)</code></th>
<td class="colLast">
<div class="block">Gibt zurück, ob diese Menge eine Untermenge der Menge s ist.</div>
</td>
</tr>
<tr id="i9" class="rowColor">
<td class="colFirst"><code>Set</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#vereinigungsmenge(Set)">vereinigungsmenge</a></span>&#8203;(Set&nbsp;s)</code></th>
<td class="colLast">
<div class="block">Bestimmt die Vereinigungsmenge der Menge selbst und der Menge s.</div>
</td>
</tr>
</table>
<ul class="blockList">
<li class="blockList"><a id="methods.inherited.from.class.Set">
<!-- -->
</a>
<h3>Methods inherited from class&nbsp;Set</h3>
<code>gleich, toString</code></li>
</ul>
<ul class="blockList">
<li class="blockList"><a id="methods.inherited.from.class.java.lang.Object">
<!-- -->
</a>
<h3>Methods inherited from class&nbsp;java.lang.Object</h3>
<code>clone, equals, getClass, hashCode, notify, notifyAll, wait, wait, wait</code></li>
</ul>
</li>
</ul>
</section>
</li>
</ul>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="constructor.detail">
<!-- -->
</a>
<h3>Constructor Detail</h3>
<a id="&lt;init&gt;()">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>SetVarianteA</h4>
<pre>public&nbsp;SetVarianteA()</pre>
<div class="block">Erzeugt eine neue leere Set</div>
</li>
</ul>
</li>
</ul>
</section>
<!-- ============ METHOD DETAIL ========== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="method.detail">
<!-- -->
</a>
<h3>Method Detail</h3>
<a id="alsArray()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>alsArray</h4>
<pre class="methodSignature">protected&nbsp;int[]&nbsp;alsArray()</pre>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code>alsArray</code>&nbsp;in class&nbsp;<code>Set</code></dd>
</dl>
</li>
</ul>
<a id="istLeer()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>istLeer</h4>
<pre class="methodSignature">public&nbsp;boolean&nbsp;istLeer()</pre>
<div class="block">Gibt zurück, ob die Menge kein Element enthält</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code>istLeer</code>&nbsp;in class&nbsp;<code>Set</code></dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>true, wenn die Menge leer ist; false sonst</dd>
</dl>
</li>
</ul>
<a id="anzahl()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>anzahl</h4>
<pre class="methodSignature">public&nbsp;int&nbsp;anzahl()</pre>
<div class="block">Gibt die Mächtigkeit der Menge zurück</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code>anzahl</code>&nbsp;in class&nbsp;<code>Set</code></dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>Die Anzahl der Elemente in der Menge</dd>
</dl>
</li>
</ul>
<a id="differenz(Set)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>differenz</h4>
<pre class="methodSignature">public&nbsp;Set&nbsp;differenz&#8203;(Set&nbsp;s)</pre>
<div class="block">Bestimmt die Differenzmenge der Menge selbst und der Menge s.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code>differenz</code>&nbsp;in class&nbsp;<code>Set</code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>s</code> - Die Menge, die von dieser Menge abgezogen werden soll.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>Eine neue Set, die alle Elemente dieser Menge enthält, die nicht in s enthalten sind.</dd>
</dl>
</li>
</ul>
<a id="untermenge(Set)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>untermenge</h4>
<pre class="methodSignature">public&nbsp;boolean&nbsp;untermenge&#8203;(Set&nbsp;s)</pre>
<div class="block">Gibt zurück, ob diese Menge eine Untermenge der Menge s ist.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code>untermenge</code>&nbsp;in class&nbsp;<code>Set</code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>s</code> - Die Menge, die geprüft werden soll.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>true, wenn jedes Element dieser Menge in s enthalten ist; false sonst</dd>
</dl>
</li>
</ul>
<a id="vereinigungsmenge(Set)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>vereinigungsmenge</h4>
<pre class="methodSignature">public&nbsp;Set&nbsp;vereinigungsmenge&#8203;(Set&nbsp;s)</pre>
<div class="block">Bestimmt die Vereinigungsmenge der Menge selbst und der Menge s.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code>vereinigungsmenge</code>&nbsp;in class&nbsp;<code>Set</code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>s</code> - Die Menge, mit der die Vereinigungsmenge bestimmt werden soll</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>Eine neue Set, die die Vereinigungsmenge der beiden Mengen repräsentiert.</dd>
</dl>
</li>
</ul>
<a id="einfuegen(int)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>einfuegen</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;einfuegen&#8203;(int&nbsp;n)</pre>
<div class="block">Fügt einen neuen Wert in die Menge ein, falls er nicht bereits enthalten ist.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code>einfuegen</code>&nbsp;in class&nbsp;<code>Set</code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>wert</code> - Der einzufügende Wert</dd>
</dl>
</li>
</ul>
<a id="schnittmenge(Set)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>schnittmenge</h4>
<pre class="methodSignature">public&nbsp;Set&nbsp;schnittmenge&#8203;(Set&nbsp;s)</pre>
<div class="block">Bestimmt die Schnittmenge der Menge selbst und der Menge s.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code>schnittmenge</code>&nbsp;in class&nbsp;<code>Set</code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>s</code> - Die Menge, mit der die Schnittmenge bestimmt werden soll</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>Eine neue Set, die die Schnittmenge der beiden Mengen repräsentiert.</dd>
</dl>
</li>
</ul>
<a id="enthaelt(int)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>enthaelt</h4>
<pre class="methodSignature">public&nbsp;boolean&nbsp;enthaelt&#8203;(int&nbsp;n)</pre>
<div class="block">Gibt zurück, ob ein bestimmter Wert in der Menge enthalten ist.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code>enthaelt</code>&nbsp;in class&nbsp;<code>Set</code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>wert</code> - Der zu suchende Wert</dd>
</dl>
</li>
</ul>
<a id="entfernen(int)">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>entfernen</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;entfernen&#8203;(int&nbsp;n)</pre>
<div class="block">Entfernt einen Wert aus der Menge, falls er enthalten ist.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code>entfernen</code>&nbsp;in class&nbsp;<code>Set</code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>wert</code> - Der zu entfernende Wert</dd>
</dl>
</li>
</ul>
</li>
</ul>
</section>
</li>
</ul>
</div>
</div>
</main>
<!-- ========= END OF CLASS DATA ========= -->
</body>
</html>

View file

@ -0,0 +1,401 @@
<!DOCTYPE HTML>
<!-- NewPage -->
<html lang="de">
<head>
<!-- Generated by javadoc (11.0.2) on Mon Jan 11 13:04:17 CET 2021 -->
<title>SetVarianteB</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="dc.created" content="2021-01-11">
<link rel="stylesheet" type="text/css" href="stylesheet.css" title="Style">
<script type="text/javascript" src="script.js"></script>
</head>
<body>
<script type="text/javascript"><!--
try {
if (location.href.indexOf('is-external=true') == -1) {
parent.document.title="SetVarianteB";
}
}
catch(err) {
}
//-->
var data = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10,"i7":10,"i8":10,"i9":10};
var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
var altColor = "altColor";
var rowColor = "rowColor";
var tableTab = "tableTab";
var activeTableTab = "activeTableTab";
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<!-- ======== START OF CLASS DATA ======== -->
<main role="main">
<div class="header">
<h2 title="Class SetVarianteB" class="title">Class SetVarianteB</h2>
</div>
<div class="contentContainer">
<ul class="inheritance">
<li>java.lang.Object</li>
<li>
<ul class="inheritance">
<li>Set</li>
<li>
<ul class="inheritance">
<li>SetVarianteB</li>
</ul>
</li>
</ul>
</li>
</ul>
<div class="description">
<ul class="blockList">
<li class="blockList">
<hr>
<pre>public class <span class="typeNameLabel">SetVarianteB</span>
extends Set</pre>
<div class="block">Set-Variante B</div>
<dl>
<dt><span class="simpleTagLabel">Version:</span></dt>
<dd>26.9.2020</dd>
<dt><span class="simpleTagLabel">Author:</span></dt>
<dd>Rainer Helfrich</dd>
</dl>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="constructor.summary">
<!-- -->
</a>
<h3>Constructor Summary</h3>
<table class="memberSummary">
<caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Constructor</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tr class="altColor">
<th class="colConstructorName" scope="row"><code><span class="memberNameLink"><a href="#%3Cinit%3E()">SetVarianteB</a></span>()</code></th>
<td class="colLast">
<div class="block">Erzeugt eine neue leere Set</div>
</td>
</tr>
</table>
</li>
</ul>
</section>
<!-- ========== METHOD SUMMARY =========== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="method.summary">
<!-- -->
</a>
<h3>Method Summary</h3>
<table class="memberSummary">
<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colSecond" scope="col">Method</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tr id="i0" class="altColor">
<td class="colFirst"><code>protected int[]</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#alsArray()">alsArray</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i1" class="rowColor">
<td class="colFirst"><code>int</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#anzahl()">anzahl</a></span>()</code></th>
<td class="colLast">
<div class="block">Gibt die Mächtigkeit der Menge zurück</div>
</td>
</tr>
<tr id="i2" class="altColor">
<td class="colFirst"><code>Set</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#differenz(Set)">differenz</a></span>&#8203;(Set&nbsp;s)</code></th>
<td class="colLast">
<div class="block">Bestimmt die Differenzmenge der Menge selbst und der Menge s.</div>
</td>
</tr>
<tr id="i3" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#einfuegen(int)">einfuegen</a></span>&#8203;(int&nbsp;wert)</code></th>
<td class="colLast">
<div class="block">Fügt einen neuen Wert in die Menge ein, falls er nicht bereits enthalten ist.</div>
</td>
</tr>
<tr id="i4" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#entfernen(int)">entfernen</a></span>&#8203;(int&nbsp;wert)</code></th>
<td class="colLast">
<div class="block">Entfernt einen Wert aus der Menge, falls er enthalten ist.</div>
</td>
</tr>
<tr id="i5" class="rowColor">
<td class="colFirst"><code>boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#enthaelt(int)">enthaelt</a></span>&#8203;(int&nbsp;x)</code></th>
<td class="colLast">
<div class="block">Gibt zurück, ob ein bestimmter Wert in der Menge enthalten ist.</div>
</td>
</tr>
<tr id="i6" class="altColor">
<td class="colFirst"><code>boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#istLeer()">istLeer</a></span>()</code></th>
<td class="colLast">
<div class="block">Gibt zurück, ob die Menge kein Element enthält</div>
</td>
</tr>
<tr id="i7" class="rowColor">
<td class="colFirst"><code>Set</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#schnittmenge(Set)">schnittmenge</a></span>&#8203;(Set&nbsp;s)</code></th>
<td class="colLast">
<div class="block">Bestimmt die Schnittmenge der Menge selbst und der Menge s.</div>
</td>
</tr>
<tr id="i8" class="altColor">
<td class="colFirst"><code>boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#untermenge(Set)">untermenge</a></span>&#8203;(Set&nbsp;s)</code></th>
<td class="colLast">
<div class="block">Gibt zurück, ob diese Menge eine Untermenge der Menge s ist.</div>
</td>
</tr>
<tr id="i9" class="rowColor">
<td class="colFirst"><code>Set</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#vereinigungsmenge(Set)">vereinigungsmenge</a></span>&#8203;(Set&nbsp;s)</code></th>
<td class="colLast">
<div class="block">Bestimmt die Vereinigungsmenge der Menge selbst und der Menge s.</div>
</td>
</tr>
</table>
<ul class="blockList">
<li class="blockList"><a id="methods.inherited.from.class.Set">
<!-- -->
</a>
<h3>Methods inherited from class&nbsp;Set</h3>
<code>gleich, toString</code></li>
</ul>
<ul class="blockList">
<li class="blockList"><a id="methods.inherited.from.class.java.lang.Object">
<!-- -->
</a>
<h3>Methods inherited from class&nbsp;java.lang.Object</h3>
<code>clone, equals, getClass, hashCode, notify, notifyAll, wait, wait, wait</code></li>
</ul>
</li>
</ul>
</section>
</li>
</ul>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="constructor.detail">
<!-- -->
</a>
<h3>Constructor Detail</h3>
<a id="&lt;init&gt;()">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>SetVarianteB</h4>
<pre>public&nbsp;SetVarianteB()</pre>
<div class="block">Erzeugt eine neue leere Set</div>
</li>
</ul>
</li>
</ul>
</section>
<!-- ============ METHOD DETAIL ========== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="method.detail">
<!-- -->
</a>
<h3>Method Detail</h3>
<a id="istLeer()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>istLeer</h4>
<pre class="methodSignature">public&nbsp;boolean&nbsp;istLeer()</pre>
<div class="block">Gibt zurück, ob die Menge kein Element enthält</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code>istLeer</code>&nbsp;in class&nbsp;<code>Set</code></dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>true, wenn die Menge leer ist; false sonst</dd>
</dl>
</li>
</ul>
<a id="anzahl()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>anzahl</h4>
<pre class="methodSignature">public&nbsp;int&nbsp;anzahl()</pre>
<div class="block">Gibt die Mächtigkeit der Menge zurück</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code>anzahl</code>&nbsp;in class&nbsp;<code>Set</code></dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>Die Anzahl der Elemente in der Menge</dd>
</dl>
</li>
</ul>
<a id="differenz(Set)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>differenz</h4>
<pre class="methodSignature">public&nbsp;Set&nbsp;differenz&#8203;(Set&nbsp;s)</pre>
<div class="block">Bestimmt die Differenzmenge der Menge selbst und der Menge s.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code>differenz</code>&nbsp;in class&nbsp;<code>Set</code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>s</code> - Die Menge, die von dieser Menge abgezogen werden soll.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>Eine neue Set, die alle Elemente dieser Menge enthält, die nicht in s enthalten sind.</dd>
</dl>
</li>
</ul>
<a id="untermenge(Set)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>untermenge</h4>
<pre class="methodSignature">public&nbsp;boolean&nbsp;untermenge&#8203;(Set&nbsp;s)</pre>
<div class="block">Gibt zurück, ob diese Menge eine Untermenge der Menge s ist.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code>untermenge</code>&nbsp;in class&nbsp;<code>Set</code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>s</code> - Die Menge, die geprüft werden soll.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>true, wenn jedes Element dieser Menge in s enthalten ist; false sonst</dd>
</dl>
</li>
</ul>
<a id="vereinigungsmenge(Set)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>vereinigungsmenge</h4>
<pre class="methodSignature">public&nbsp;Set&nbsp;vereinigungsmenge&#8203;(Set&nbsp;s)</pre>
<div class="block">Bestimmt die Vereinigungsmenge der Menge selbst und der Menge s.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code>vereinigungsmenge</code>&nbsp;in class&nbsp;<code>Set</code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>s</code> - Die Menge, mit der die Vereinigungsmenge bestimmt werden soll</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>Eine neue Set, die die Vereinigungsmenge der beiden Mengen repräsentiert.</dd>
</dl>
</li>
</ul>
<a id="alsArray()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>alsArray</h4>
<pre class="methodSignature">protected&nbsp;int[]&nbsp;alsArray()</pre>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code>alsArray</code>&nbsp;in class&nbsp;<code>Set</code></dd>
</dl>
</li>
</ul>
<a id="schnittmenge(Set)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>schnittmenge</h4>
<pre class="methodSignature">public&nbsp;Set&nbsp;schnittmenge&#8203;(Set&nbsp;s)</pre>
<div class="block">Bestimmt die Schnittmenge der Menge selbst und der Menge s.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code>schnittmenge</code>&nbsp;in class&nbsp;<code>Set</code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>s</code> - Die Menge, mit der die Schnittmenge bestimmt werden soll</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>Eine neue Set, die die Schnittmenge der beiden Mengen repräsentiert.</dd>
</dl>
</li>
</ul>
<a id="enthaelt(int)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>enthaelt</h4>
<pre class="methodSignature">public&nbsp;boolean&nbsp;enthaelt&#8203;(int&nbsp;x)</pre>
<div class="block">Gibt zurück, ob ein bestimmter Wert in der Menge enthalten ist.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code>enthaelt</code>&nbsp;in class&nbsp;<code>Set</code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>wert</code> - Der zu suchende Wert</dd>
</dl>
</li>
</ul>
<a id="entfernen(int)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>entfernen</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;entfernen&#8203;(int&nbsp;wert)</pre>
<div class="block">Entfernt einen Wert aus der Menge, falls er enthalten ist.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code>entfernen</code>&nbsp;in class&nbsp;<code>Set</code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>wert</code> - Der zu entfernende Wert</dd>
</dl>
</li>
</ul>
<a id="einfuegen(int)">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>einfuegen</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;einfuegen&#8203;(int&nbsp;wert)</pre>
<div class="block">Fügt einen neuen Wert in die Menge ein, falls er nicht bereits enthalten ist.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code>einfuegen</code>&nbsp;in class&nbsp;<code>Set</code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>wert</code> - Der einzufügende Wert</dd>
</dl>
</li>
</ul>
</li>
</ul>
</section>
</li>
</ul>
</div>
</div>
</main>
<!-- ========= END OF CLASS DATA ========= -->
</body>
</html>

View file

@ -0,0 +1,426 @@
<!DOCTYPE HTML>
<!-- NewPage -->
<html lang="de">
<head>
<!-- Generated by javadoc (11.0.2) on Mon Jan 11 13:04:17 CET 2021 -->
<title>SetVarianteC</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="dc.created" content="2021-01-11">
<link rel="stylesheet" type="text/css" href="stylesheet.css" title="Style">
<script type="text/javascript" src="script.js"></script>
</head>
<body>
<script type="text/javascript"><!--
try {
if (location.href.indexOf('is-external=true') == -1) {
parent.document.title="SetVarianteC";
}
}
catch(err) {
}
//-->
var data = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10,"i7":10,"i8":10,"i9":10,"i10":10};
var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
var altColor = "altColor";
var rowColor = "rowColor";
var tableTab = "tableTab";
var activeTableTab = "activeTableTab";
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<!-- ======== START OF CLASS DATA ======== -->
<main role="main">
<div class="header">
<h2 title="Class SetVarianteC" class="title">Class SetVarianteC</h2>
</div>
<div class="contentContainer">
<ul class="inheritance">
<li>java.lang.Object</li>
<li>
<ul class="inheritance">
<li>Set</li>
<li>
<ul class="inheritance">
<li>SetVarianteC</li>
</ul>
</li>
</ul>
</li>
</ul>
<div class="description">
<ul class="blockList">
<li class="blockList">
<hr>
<pre>public class <span class="typeNameLabel">SetVarianteC</span>
extends Set</pre>
<div class="block">Set-Variante C</div>
<dl>
<dt><span class="simpleTagLabel">Version:</span></dt>
<dd>26.9.2020</dd>
<dt><span class="simpleTagLabel">Author:</span></dt>
<dd>Rainer Helfrich</dd>
</dl>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="constructor.summary">
<!-- -->
</a>
<h3>Constructor Summary</h3>
<table class="memberSummary">
<caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Constructor</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tr class="altColor">
<th class="colConstructorName" scope="row"><code><span class="memberNameLink"><a href="#%3Cinit%3E()">SetVarianteC</a></span>()</code></th>
<td class="colLast">
<div class="block">Erzeugt eine neue leere Set</div>
</td>
</tr>
</table>
</li>
</ul>
</section>
<!-- ========== METHOD SUMMARY =========== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="method.summary">
<!-- -->
</a>
<h3>Method Summary</h3>
<table class="memberSummary">
<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colSecond" scope="col">Method</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tr id="i0" class="altColor">
<td class="colFirst"><code>protected int[]</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#alsArray()">alsArray</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i1" class="rowColor">
<td class="colFirst"><code>int</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#anzahl()">anzahl</a></span>()</code></th>
<td class="colLast">
<div class="block">Gibt die Mächtigkeit der Menge zurück</div>
</td>
</tr>
<tr id="i2" class="altColor">
<td class="colFirst"><code>Set</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#differenz(Set)">differenz</a></span>&#8203;(Set&nbsp;s)</code></th>
<td class="colLast">
<div class="block">Bestimmt die Differenzmenge der Menge selbst und der Menge s.</div>
</td>
</tr>
<tr id="i3" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#einfuegen(int)">einfuegen</a></span>&#8203;(int&nbsp;x)</code></th>
<td class="colLast">
<div class="block">Fügt einen neuen Wert in die Menge ein, falls er nicht bereits enthalten ist.</div>
</td>
</tr>
<tr id="i4" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#entfernen(int)">entfernen</a></span>&#8203;(int&nbsp;x)</code></th>
<td class="colLast">
<div class="block">Entfernt einen Wert aus der Menge, falls er enthalten ist.</div>
</td>
</tr>
<tr id="i5" class="rowColor">
<td class="colFirst"><code>boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#enthaelt(int)">enthaelt</a></span>&#8203;(int&nbsp;x)</code></th>
<td class="colLast">
<div class="block">Gibt zurück, ob ein bestimmter Wert in der Menge enthalten ist.</div>
</td>
</tr>
<tr id="i6" class="altColor">
<td class="colFirst"><code>boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#gleich(Set)">gleich</a></span>&#8203;(Set&nbsp;s)</code></th>
<td class="colLast">
<div class="block">Gibt zurück, ob diese Menge und s die gleichen Elemente enthalten</div>
</td>
</tr>
<tr id="i7" class="rowColor">
<td class="colFirst"><code>boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#istLeer()">istLeer</a></span>()</code></th>
<td class="colLast">
<div class="block">Gibt zurück, ob die Menge kein Element enthält</div>
</td>
</tr>
<tr id="i8" class="altColor">
<td class="colFirst"><code>Set</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#schnittmenge(Set)">schnittmenge</a></span>&#8203;(Set&nbsp;s)</code></th>
<td class="colLast">
<div class="block">Bestimmt die Schnittmenge der Menge selbst und der Menge s.</div>
</td>
</tr>
<tr id="i9" class="rowColor">
<td class="colFirst"><code>boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#untermenge(Set)">untermenge</a></span>&#8203;(Set&nbsp;s)</code></th>
<td class="colLast">
<div class="block">Gibt zurück, ob diese Menge eine Untermenge der Menge s ist.</div>
</td>
</tr>
<tr id="i10" class="altColor">
<td class="colFirst"><code>Set</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#vereinigungsmenge(Set)">vereinigungsmenge</a></span>&#8203;(Set&nbsp;s)</code></th>
<td class="colLast">
<div class="block">Bestimmt die Vereinigungsmenge der Menge selbst und der Menge s.</div>
</td>
</tr>
</table>
<ul class="blockList">
<li class="blockList"><a id="methods.inherited.from.class.Set">
<!-- -->
</a>
<h3>Methods inherited from class&nbsp;Set</h3>
<code>toString</code></li>
</ul>
<ul class="blockList">
<li class="blockList"><a id="methods.inherited.from.class.java.lang.Object">
<!-- -->
</a>
<h3>Methods inherited from class&nbsp;java.lang.Object</h3>
<code>clone, equals, getClass, hashCode, notify, notifyAll, wait, wait, wait</code></li>
</ul>
</li>
</ul>
</section>
</li>
</ul>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="constructor.detail">
<!-- -->
</a>
<h3>Constructor Detail</h3>
<a id="&lt;init&gt;()">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>SetVarianteC</h4>
<pre>public&nbsp;SetVarianteC()</pre>
<div class="block">Erzeugt eine neue leere Set</div>
</li>
</ul>
</li>
</ul>
</section>
<!-- ============ METHOD DETAIL ========== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="method.detail">
<!-- -->
</a>
<h3>Method Detail</h3>
<a id="alsArray()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>alsArray</h4>
<pre class="methodSignature">protected&nbsp;int[]&nbsp;alsArray()</pre>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code>alsArray</code>&nbsp;in class&nbsp;<code>Set</code></dd>
</dl>
</li>
</ul>
<a id="istLeer()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>istLeer</h4>
<pre class="methodSignature">public&nbsp;boolean&nbsp;istLeer()</pre>
<div class="block">Gibt zurück, ob die Menge kein Element enthält</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code>istLeer</code>&nbsp;in class&nbsp;<code>Set</code></dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>true, wenn die Menge leer ist; false sonst</dd>
</dl>
</li>
</ul>
<a id="enthaelt(int)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>enthaelt</h4>
<pre class="methodSignature">public&nbsp;boolean&nbsp;enthaelt&#8203;(int&nbsp;x)</pre>
<div class="block">Gibt zurück, ob ein bestimmter Wert in der Menge enthalten ist.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code>enthaelt</code>&nbsp;in class&nbsp;<code>Set</code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>wert</code> - Der zu suchende Wert</dd>
</dl>
</li>
</ul>
<a id="anzahl()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>anzahl</h4>
<pre class="methodSignature">public&nbsp;int&nbsp;anzahl()</pre>
<div class="block">Gibt die Mächtigkeit der Menge zurück</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code>anzahl</code>&nbsp;in class&nbsp;<code>Set</code></dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>Die Anzahl der Elemente in der Menge</dd>
</dl>
</li>
</ul>
<a id="differenz(Set)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>differenz</h4>
<pre class="methodSignature">public&nbsp;Set&nbsp;differenz&#8203;(Set&nbsp;s)</pre>
<div class="block">Bestimmt die Differenzmenge der Menge selbst und der Menge s.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code>differenz</code>&nbsp;in class&nbsp;<code>Set</code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>s</code> - Die Menge, die von dieser Menge abgezogen werden soll.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>Eine neue Set, die alle Elemente dieser Menge enthält, die nicht in s enthalten sind.</dd>
</dl>
</li>
</ul>
<a id="einfuegen(int)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>einfuegen</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;einfuegen&#8203;(int&nbsp;x)</pre>
<div class="block">Fügt einen neuen Wert in die Menge ein, falls er nicht bereits enthalten ist.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code>einfuegen</code>&nbsp;in class&nbsp;<code>Set</code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>wert</code> - Der einzufügende Wert</dd>
</dl>
</li>
</ul>
<a id="untermenge(Set)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>untermenge</h4>
<pre class="methodSignature">public&nbsp;boolean&nbsp;untermenge&#8203;(Set&nbsp;s)</pre>
<div class="block">Gibt zurück, ob diese Menge eine Untermenge der Menge s ist.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code>untermenge</code>&nbsp;in class&nbsp;<code>Set</code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>s</code> - Die Menge, die geprüft werden soll.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>true, wenn jedes Element dieser Menge in s enthalten ist; false sonst</dd>
</dl>
</li>
</ul>
<a id="vereinigungsmenge(Set)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>vereinigungsmenge</h4>
<pre class="methodSignature">public&nbsp;Set&nbsp;vereinigungsmenge&#8203;(Set&nbsp;s)</pre>
<div class="block">Bestimmt die Vereinigungsmenge der Menge selbst und der Menge s.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code>vereinigungsmenge</code>&nbsp;in class&nbsp;<code>Set</code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>s</code> - Die Menge, mit der die Vereinigungsmenge bestimmt werden soll</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>Eine neue Set, die die Vereinigungsmenge der beiden Mengen repräsentiert.</dd>
</dl>
</li>
</ul>
<a id="schnittmenge(Set)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>schnittmenge</h4>
<pre class="methodSignature">public&nbsp;Set&nbsp;schnittmenge&#8203;(Set&nbsp;s)</pre>
<div class="block">Bestimmt die Schnittmenge der Menge selbst und der Menge s.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code>schnittmenge</code>&nbsp;in class&nbsp;<code>Set</code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>s</code> - Die Menge, mit der die Schnittmenge bestimmt werden soll</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>Eine neue Set, die die Schnittmenge der beiden Mengen repräsentiert.</dd>
</dl>
</li>
</ul>
<a id="entfernen(int)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>entfernen</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;entfernen&#8203;(int&nbsp;x)</pre>
<div class="block">Entfernt einen Wert aus der Menge, falls er enthalten ist.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code>entfernen</code>&nbsp;in class&nbsp;<code>Set</code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>wert</code> - Der zu entfernende Wert</dd>
</dl>
</li>
</ul>
<a id="gleich(Set)">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>gleich</h4>
<pre class="methodSignature">public&nbsp;boolean&nbsp;gleich&#8203;(Set&nbsp;s)</pre>
<div class="block">Gibt zurück, ob diese Menge und s die gleichen Elemente enthalten</div>
<dl>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code>gleich</code>&nbsp;in class&nbsp;<code>Set</code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>s</code> - Die zu überprüfende Menge</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>true, wenn beide Mengen die gleichen Elemente enthalten; false sonst</dd>
</dl>
</li>
</ul>
</li>
</ul>
</section>
</li>
</ul>
</div>
</div>
</main>
<!-- ========= END OF CLASS DATA ========= -->
</body>
</html>

View file

@ -0,0 +1,20 @@
<!DOCTYPE HTML>
<!-- NewPage -->
<html lang="de">
<head>
<!-- Generated by javadoc (11.0.2) on Mon Jan 11 13:04:17 CET 2021 -->
<title>All Classes</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="dc.created" content="2021-01-11">
<link rel="stylesheet" type="text/css" href="stylesheet.css" title="Style">
<script type="text/javascript" src="script.js"></script>
</head>
<body>
<h1 class="bar">All&nbsp;Classes</h1>
<main role="main" class="indexContainer">
<ul>
<li><a href="SetVarianteC.html" title="class in &lt;Unnamed&gt;">SetVarianteC</a></li>
</ul>
</main>
</body>
</html>

View file

@ -0,0 +1,35 @@
<!DOCTYPE HTML>
<!-- NewPage -->
<html lang="de">
<head>
<!-- Generated by javadoc (11.0.2) on Mon Jan 11 13:04:17 CET 2021 -->
<title>Constant Field Values</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="dc.created" content="2021-01-11">
<link rel="stylesheet" type="text/css" href="stylesheet.css" title="Style">
<script type="text/javascript" src="script.js"></script>
</head>
<body>
<script type="text/javascript"><!--
try {
if (location.href.indexOf('is-external=true') == -1) {
parent.document.title="Constant Field Values";
}
}
catch(err) {
}
//-->
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<main role="main">
<div class="header">
<h1 title="Constant Field Values" class="title">Constant Field Values</h1>
<section role="region">
<h2 title="Contents">Contents</h2>
</section>
</div>
</main>
</body>
</html>

View file

@ -0,0 +1 @@
unnamed package

View file

@ -0,0 +1,23 @@
<!DOCTYPE HTML>
<!-- NewPage -->
<html lang="de">
<head>
<!-- Generated by javadoc (11.0.2) on Mon Jan 11 13:04:17 CET 2021 -->
<title>Generated Documentation (Untitled)</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<script type="text/javascript">window.location.replace('SetVarianteC.html')</script>
<noscript>
<meta http-equiv="Refresh" content="0;SetVarianteC.html">
</noscript>
<link rel="canonical" href="SetVarianteC.html">
<link rel="stylesheet" type="text/css" href="stylesheet.css" title="Style">
</head>
<body>
<main role="main">
<noscript>
<p>JavaScript is disabled on your browser.</p>
</noscript>
<p><a href="SetVarianteC.html">SetVarianteC.html</a></p>
</main>
</body>
</html>

View file

@ -0,0 +1,40 @@
Class documentation
<---- javadoc command: ---->
D:\Program Files\BlueJ\jdk\bin\javadoc.exe
-author
-version
-nodeprecated
-package
-Xdoclint:none
-noindex
-notree
-nohelp
-nonavbar
-source
11
-classpath
D:\Program Files\BlueJ\lib\bluejcore.jar;D:\Program Files\BlueJ\lib\junit-4.11.jar;D:\Program Files\BlueJ\lib\hamcrest-core-1.3.jar;D:\Program Files\BlueJ\lib\lang-stride.jar;D:\Program Files\BlueJ\lib\javafx\lib\javafx.base.jar;D:\Program Files\BlueJ\lib\javafx\lib\javafx.controls.jar;D:\Program Files\BlueJ\lib\javafx\lib\javafx.fxml.jar;D:\Program Files\BlueJ\lib\javafx\lib\javafx.graphics.jar;D:\Program Files\BlueJ\lib\javafx\lib\javafx.media.jar;D:\Program Files\BlueJ\lib\javafx\lib\javafx.properties.jar;D:\Program Files\BlueJ\lib\javafx\lib\javafx.swing.jar;D:\Program Files\BlueJ\lib\javafx\lib\javafx.web.jar;D:\Users\LeRainieur\Documents\Schule\Fortbildungen\Weiterentwicklung der Informatik ab 2015\Eigener Ablauf\Regionaltag 9+10\Turtle - Lösung\aplu5.jar;D:\Users\LeRainieur\Documents\Schule\Fortbildungen\ZPG Oberstufe\ADTs\Ergebnis\3_vorlagen_tauschordner\04_set (mit Sourcecode)\+libs\SizeOf.jar;D:\Users\LeRainieur\Documents\Schule\Fortbildungen\ZPG Oberstufe\ADTs\Ergebnis\3_vorlagen_tauschordner\04_set (mit Sourcecode)
-d
D:\Users\LeRainieur\Documents\Schule\Fortbildungen\ZPG Oberstufe\ADTs\Ergebnis\3_vorlagen_tauschordner\04_set (mit Sourcecode)\doc
-encoding
UTF-8
-charset
UTF-8
D:\Users\LeRainieur\Documents\Schule\Fortbildungen\ZPG Oberstufe\ADTs\Ergebnis\3_vorlagen_tauschordner\04_set (mit Sourcecode)\SetVarianteC.java
<---- end of javadoc command ---->
Loading source file D:\Users\LeRainieur\Documents\Schule\Fortbildungen\ZPG Oberstufe\ADTs\Ergebnis\3_vorlagen_tauschordner\04_set (mit Sourcecode)\SetVarianteC.java...
Constructing Javadoc information...
Standard Doclet version 11.0.2
Building tree for all the packages and classes...
Generating D:\Users\LeRainieur\Documents\Schule\Fortbildungen\ZPG Oberstufe\ADTs\Ergebnis\3_vorlagen_tauschordner\04_set (mit Sourcecode)\doc\SetVarianteC.html...
D:\Users\LeRainieur\Documents\Schule\Fortbildungen\ZPG Oberstufe\ADTs\Ergebnis\3_vorlagen_tauschordner\04_set (mit Sourcecode)\SetVarianteC.java:54: warning - @param argument "wert" is not a parameter name.
D:\Users\LeRainieur\Documents\Schule\Fortbildungen\ZPG Oberstufe\ADTs\Ergebnis\3_vorlagen_tauschordner\04_set (mit Sourcecode)\SetVarianteC.java:117: warning - @param argument "wert" is not a parameter name.
D:\Users\LeRainieur\Documents\Schule\Fortbildungen\ZPG Oberstufe\ADTs\Ergebnis\3_vorlagen_tauschordner\04_set (mit Sourcecode)\SetVarianteC.java:243: warning - @param argument "wert" is not a parameter name.
Generating D:\Users\LeRainieur\Documents\Schule\Fortbildungen\ZPG Oberstufe\ADTs\Ergebnis\3_vorlagen_tauschordner\04_set (mit Sourcecode)\doc\package-summary.html...
Generating D:\Users\LeRainieur\Documents\Schule\Fortbildungen\ZPG Oberstufe\ADTs\Ergebnis\3_vorlagen_tauschordner\04_set (mit Sourcecode)\doc\constant-values.html...
Building index for all the packages and classes...
Building index for all classes...
Generating D:\Users\LeRainieur\Documents\Schule\Fortbildungen\ZPG Oberstufe\ADTs\Ergebnis\3_vorlagen_tauschordner\04_set (mit Sourcecode)\doc\allclasses.html...
Generating D:\Users\LeRainieur\Documents\Schule\Fortbildungen\ZPG Oberstufe\ADTs\Ergebnis\3_vorlagen_tauschordner\04_set (mit Sourcecode)\doc\allclasses.html...
Generating D:\Users\LeRainieur\Documents\Schule\Fortbildungen\ZPG Oberstufe\ADTs\Ergebnis\3_vorlagen_tauschordner\04_set (mit Sourcecode)\doc\index.html...
3 warnings

View file

@ -0,0 +1,53 @@
<!DOCTYPE HTML>
<!-- NewPage -->
<html lang="de">
<head>
<!-- Generated by javadoc (11.0.2) on Mon Jan 11 13:04:17 CET 2021 -->
<title>&lt;Unnamed&gt;</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="dc.created" content="2021-01-11">
<link rel="stylesheet" type="text/css" href="stylesheet.css" title="Style">
<script type="text/javascript" src="script.js"></script>
</head>
<body>
<script type="text/javascript"><!--
try {
if (location.href.indexOf('is-external=true') == -1) {
parent.document.title="<Unnamed>";
}
}
catch(err) {
}
//-->
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<main role="main">
<div class="header">
<h1 title="Package" class="title">Package&nbsp;&lt;Unnamed&gt;</h1>
</div>
<div class="contentContainer">
<ul class="blockList">
<li class="blockList">
<table class="typeSummary">
<caption><span>Class Summary</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Class</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tbody>
<tr class="altColor">
<th class="colFirst" scope="row"><a href="SetVarianteC.html" title="class in &lt;Unnamed&gt;">SetVarianteC</a></th>
<td class="colLast">
<div class="block">Set-Variante C</div>
</td>
</tr>
</tbody>
</table>
</li>
</ul>
</div>
</main>
</body>
</html>

View file

@ -0,0 +1,139 @@
/*
* Copyright (c) 2013, 2018, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Oracle designates this
* particular file as subject to the "Classpath" exception as provided
* by Oracle in the LICENSE file that accompanied this code.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
var moduleSearchIndex;
var packageSearchIndex;
var typeSearchIndex;
var memberSearchIndex;
var tagSearchIndex;
function loadScripts(doc, tag) {
createElem(doc, tag, 'jquery/jszip/dist/jszip.js');
createElem(doc, tag, 'jquery/jszip-utils/dist/jszip-utils.js');
if (window.navigator.userAgent.indexOf('MSIE ') > 0 || window.navigator.userAgent.indexOf('Trident/') > 0 ||
window.navigator.userAgent.indexOf('Edge/') > 0) {
createElem(doc, tag, 'jquery/jszip-utils/dist/jszip-utils-ie.js');
}
createElem(doc, tag, 'search.js');
$.get(pathtoroot + "module-search-index.zip")
.done(function() {
JSZipUtils.getBinaryContent(pathtoroot + "module-search-index.zip", function(e, data) {
var zip = new JSZip(data);
zip.load(data);
moduleSearchIndex = JSON.parse(zip.file("module-search-index.json").asText());
});
});
$.get(pathtoroot + "package-search-index.zip")
.done(function() {
JSZipUtils.getBinaryContent(pathtoroot + "package-search-index.zip", function(e, data) {
var zip = new JSZip(data);
zip.load(data);
packageSearchIndex = JSON.parse(zip.file("package-search-index.json").asText());
});
});
$.get(pathtoroot + "type-search-index.zip")
.done(function() {
JSZipUtils.getBinaryContent(pathtoroot + "type-search-index.zip", function(e, data) {
var zip = new JSZip(data);
zip.load(data);
typeSearchIndex = JSON.parse(zip.file("type-search-index.json").asText());
});
});
$.get(pathtoroot + "member-search-index.zip")
.done(function() {
JSZipUtils.getBinaryContent(pathtoroot + "member-search-index.zip", function(e, data) {
var zip = new JSZip(data);
zip.load(data);
memberSearchIndex = JSON.parse(zip.file("member-search-index.json").asText());
});
});
$.get(pathtoroot + "tag-search-index.zip")
.done(function() {
JSZipUtils.getBinaryContent(pathtoroot + "tag-search-index.zip", function(e, data) {
var zip = new JSZip(data);
zip.load(data);
tagSearchIndex = JSON.parse(zip.file("tag-search-index.json").asText());
});
});
if (!moduleSearchIndex) {
createElem(doc, tag, 'module-search-index.js');
}
if (!packageSearchIndex) {
createElem(doc, tag, 'package-search-index.js');
}
if (!typeSearchIndex) {
createElem(doc, tag, 'type-search-index.js');
}
if (!memberSearchIndex) {
createElem(doc, tag, 'member-search-index.js');
}
if (!tagSearchIndex) {
createElem(doc, tag, 'tag-search-index.js');
}
$(window).resize(function() {
$('.navPadding').css('padding-top', $('.fixedNav').css("height"));
});
}
function createElem(doc, tag, path) {
var script = doc.createElement(tag);
var scriptElement = doc.getElementsByTagName(tag)[0];
script.src = pathtoroot + path;
scriptElement.parentNode.insertBefore(script, scriptElement);
}
function show(type) {
count = 0;
for (var key in data) {
var row = document.getElementById(key);
if ((data[key] & type) !== 0) {
row.style.display = '';
row.className = (count++ % 2) ? rowColor : altColor;
}
else
row.style.display = 'none';
}
updateTabs(type);
}
function updateTabs(type) {
for (var value in tabs) {
var sNode = document.getElementById(tabs[value][0]);
var spanNode = sNode.firstChild;
if (value == type) {
sNode.className = activeTableTab;
spanNode.innerHTML = tabs[value][1];
}
else {
sNode.className = tableTab;
spanNode.innerHTML = "<a href=\"javascript:show("+ value + ");\">" + tabs[value][1] + "</a>";
}
}
}
function updateModuleFrame(pFrame, cFrame) {
top.packageFrame.location = pFrame;
top.classFrame.location = cFrame;
}

View file

@ -0,0 +1,906 @@
/*
* Javadoc style sheet
*/
@import url('resources/fonts/dejavu.css');
/*
* Styles for individual HTML elements.
*
* These are styles that are specific to individual HTML elements. Changing them affects the style of a particular
* HTML element throughout the page.
*/
body {
background-color:#ffffff;
color:#353833;
font-family:'DejaVu Sans', Arial, Helvetica, sans-serif;
font-size:14px;
margin:0;
padding:0;
height:100%;
width:100%;
}
iframe {
margin:0;
padding:0;
height:100%;
width:100%;
overflow-y:scroll;
border:none;
}
a:link, a:visited {
text-decoration:none;
color:#4A6782;
}
a[href]:hover, a[href]:focus {
text-decoration:none;
color:#bb7a2a;
}
a[name] {
color:#353833;
}
a[name]:before, a[name]:target, a[id]:before, a[id]:target {
content:"";
display:inline-block;
position:relative;
padding-top:129px;
margin-top:-129px;
}
pre {
font-family:'DejaVu Sans Mono', monospace;
font-size:14px;
}
h1 {
font-size:20px;
}
h2 {
font-size:18px;
}
h3 {
font-size:16px;
font-style:italic;
}
h4 {
font-size:13px;
}
h5 {
font-size:12px;
}
h6 {
font-size:11px;
}
ul {
list-style-type:disc;
}
code, tt {
font-family:'DejaVu Sans Mono', monospace;
font-size:14px;
padding-top:4px;
margin-top:8px;
line-height:1.4em;
}
dt code {
font-family:'DejaVu Sans Mono', monospace;
font-size:14px;
padding-top:4px;
}
table tr td dt code {
font-family:'DejaVu Sans Mono', monospace;
font-size:14px;
vertical-align:top;
padding-top:4px;
}
sup {
font-size:8px;
}
/*
* Styles for HTML generated by javadoc.
*
* These are style classes that are used by the standard doclet to generate HTML documentation.
*/
/*
* Styles for document title and copyright.
*/
.clear {
clear:both;
height:0px;
overflow:hidden;
}
.aboutLanguage {
float:right;
padding:0px 21px;
font-size:11px;
z-index:200;
margin-top:-9px;
}
.legalCopy {
margin-left:.5em;
}
.bar a, .bar a:link, .bar a:visited, .bar a:active {
color:#FFFFFF;
text-decoration:none;
}
.bar a:hover, .bar a:focus {
color:#bb7a2a;
}
.tab {
background-color:#0066FF;
color:#ffffff;
padding:8px;
width:5em;
font-weight:bold;
}
/*
* Styles for navigation bar.
*/
.bar {
background-color:#4D7A97;
color:#FFFFFF;
padding:.8em .5em .4em .8em;
height:auto;/*height:1.8em;*/
font-size:11px;
margin:0;
}
.navPadding {
padding-top: 107px;
}
.fixedNav {
position:fixed;
width:100%;
z-index:999;
background-color:#ffffff;
}
.topNav {
background-color:#4D7A97;
color:#FFFFFF;
float:left;
padding:0;
width:100%;
clear:right;
height:2.8em;
padding-top:10px;
overflow:hidden;
font-size:12px;
}
.bottomNav {
margin-top:10px;
background-color:#4D7A97;
color:#FFFFFF;
float:left;
padding:0;
width:100%;
clear:right;
height:2.8em;
padding-top:10px;
overflow:hidden;
font-size:12px;
}
.subNav {
background-color:#dee3e9;
float:left;
width:100%;
overflow:hidden;
font-size:12px;
}
.subNav div {
clear:left;
float:left;
padding:0 0 5px 6px;
text-transform:uppercase;
}
ul.navList, ul.subNavList {
float:left;
margin:0 25px 0 0;
padding:0;
}
ul.navList li{
list-style:none;
float:left;
padding: 5px 6px;
text-transform:uppercase;
}
ul.navListSearch {
float:right;
margin:0 0 0 0;
padding:0;
}
ul.navListSearch li {
list-style:none;
float:right;
padding: 5px 6px;
text-transform:uppercase;
}
ul.navListSearch li label {
position:relative;
right:-16px;
}
ul.subNavList li {
list-style:none;
float:left;
}
.topNav a:link, .topNav a:active, .topNav a:visited, .bottomNav a:link, .bottomNav a:active, .bottomNav a:visited {
color:#FFFFFF;
text-decoration:none;
text-transform:uppercase;
}
.topNav a:hover, .bottomNav a:hover {
text-decoration:none;
color:#bb7a2a;
text-transform:uppercase;
}
.navBarCell1Rev {
background-color:#F8981D;
color:#253441;
margin: auto 5px;
}
.skipNav {
position:absolute;
top:auto;
left:-9999px;
overflow:hidden;
}
/*
* Styles for page header and footer.
*/
.header, .footer {
clear:both;
margin:0 20px;
padding:5px 0 0 0;
}
.indexNav {
position:relative;
font-size:12px;
background-color:#dee3e9;
}
.indexNav ul {
margin-top:0;
padding:5px;
}
.indexNav ul li {
display:inline;
list-style-type:none;
padding-right:10px;
text-transform:uppercase;
}
.indexNav h1 {
font-size:13px;
}
.title {
color:#2c4557;
margin:10px 0;
}
.subTitle {
margin:5px 0 0 0;
}
.header ul {
margin:0 0 15px 0;
padding:0;
}
.footer ul {
margin:20px 0 5px 0;
}
.header ul li, .footer ul li {
list-style:none;
font-size:13px;
}
/*
* Styles for headings.
*/
div.details ul.blockList ul.blockList ul.blockList li.blockList h4, div.details ul.blockList ul.blockList ul.blockListLast li.blockList h4 {
background-color:#dee3e9;
border:1px solid #d0d9e0;
margin:0 0 6px -8px;
padding:7px 5px;
}
ul.blockList ul.blockList ul.blockList li.blockList h3 {
background-color:#dee3e9;
border:1px solid #d0d9e0;
margin:0 0 6px -8px;
padding:7px 5px;
}
ul.blockList ul.blockList li.blockList h3 {
padding:0;
margin:15px 0;
}
ul.blockList li.blockList h2 {
padding:0px 0 20px 0;
}
/*
* Styles for page layout containers.
*/
.contentContainer, .sourceContainer, .classUseContainer, .serializedFormContainer, .constantValuesContainer,
.allClassesContainer, .allPackagesContainer {
clear:both;
padding:10px 20px;
position:relative;
}
.indexContainer {
margin:10px;
position:relative;
font-size:12px;
}
.indexContainer h2 {
font-size:13px;
padding:0 0 3px 0;
}
.indexContainer ul {
margin:0;
padding:0;
}
.indexContainer ul li {
list-style:none;
padding-top:2px;
}
.contentContainer .description dl dt, .contentContainer .details dl dt, .serializedFormContainer dl dt {
font-size:12px;
font-weight:bold;
margin:10px 0 0 0;
color:#4E4E4E;
}
.contentContainer .description dl dd, .contentContainer .details dl dd, .serializedFormContainer dl dd {
margin:5px 0 10px 0px;
font-size:14px;
font-family:'DejaVu Serif', Georgia, "Times New Roman", Times, serif;
}
.serializedFormContainer dl.nameValue dt {
margin-left:1px;
font-size:1.1em;
display:inline;
font-weight:bold;
}
.serializedFormContainer dl.nameValue dd {
margin:0 0 0 1px;
font-size:1.1em;
display:inline;
}
/*
* Styles for lists.
*/
li.circle {
list-style:circle;
}
ul.horizontal li {
display:inline;
font-size:0.9em;
}
ul.inheritance {
margin:0;
padding:0;
}
ul.inheritance li {
display:inline;
list-style:none;
}
ul.inheritance li ul.inheritance {
margin-left:15px;
padding-left:15px;
padding-top:1px;
}
ul.blockList, ul.blockListLast {
margin:10px 0 10px 0;
padding:0;
}
ul.blockList li.blockList, ul.blockListLast li.blockList {
list-style:none;
margin-bottom:15px;
line-height:1.4;
}
ul.blockList ul.blockList li.blockList, ul.blockList ul.blockListLast li.blockList {
padding:0px 20px 5px 10px;
border:1px solid #ededed;
background-color:#f8f8f8;
}
ul.blockList ul.blockList ul.blockList li.blockList, ul.blockList ul.blockList ul.blockListLast li.blockList {
padding:0 0 5px 8px;
background-color:#ffffff;
border:none;
}
ul.blockList ul.blockList ul.blockList ul.blockList li.blockList {
margin-left:0;
padding-left:0;
padding-bottom:15px;
border:none;
}
ul.blockList ul.blockList ul.blockList ul.blockList li.blockListLast {
list-style:none;
border-bottom:none;
padding-bottom:0;
}
table tr td dl, table tr td dl dt, table tr td dl dd {
margin-top:0;
margin-bottom:1px;
}
/*
* Styles for tables.
*/
.overviewSummary, .memberSummary, .typeSummary, .useSummary, .constantsSummary, .deprecatedSummary,
.requiresSummary, .packagesSummary, .providesSummary, .usesSummary {
width:100%;
border-spacing:0;
border-left:1px solid #EEE;
border-right:1px solid #EEE;
border-bottom:1px solid #EEE;
}
.overviewSummary, .memberSummary, .requiresSummary, .packagesSummary, .providesSummary, .usesSummary {
padding:0px;
}
.overviewSummary caption, .memberSummary caption, .typeSummary caption,
.useSummary caption, .constantsSummary caption, .deprecatedSummary caption,
.requiresSummary caption, .packagesSummary caption, .providesSummary caption, .usesSummary caption {
position:relative;
text-align:left;
background-repeat:no-repeat;
color:#253441;
font-weight:bold;
clear:none;
overflow:hidden;
padding:0px;
padding-top:10px;
padding-left:1px;
margin:0px;
white-space:pre;
}
.overviewSummary caption a:link, .memberSummary caption a:link, .typeSummary caption a:link,
.constantsSummary caption a:link, .deprecatedSummary caption a:link,
.requiresSummary caption a:link, .packagesSummary caption a:link, .providesSummary caption a:link,
.usesSummary caption a:link,
.overviewSummary caption a:hover, .memberSummary caption a:hover, .typeSummary caption a:hover,
.constantsSummary caption a:hover, .deprecatedSummary caption a:hover,
.requiresSummary caption a:hover, .packagesSummary caption a:hover, .providesSummary caption a:hover,
.usesSummary caption a:hover,
.overviewSummary caption a:active, .memberSummary caption a:active, .typeSummary caption a:active,
.constantsSummary caption a:active, .deprecatedSummary caption a:active,
.requiresSummary caption a:active, .packagesSummary caption a:active, .providesSummary caption a:active,
.usesSummary caption a:active,
.overviewSummary caption a:visited, .memberSummary caption a:visited, .typeSummary caption a:visited,
.constantsSummary caption a:visited, .deprecatedSummary caption a:visited,
.requiresSummary caption a:visited, .packagesSummary caption a:visited, .providesSummary caption a:visited,
.usesSummary caption a:visited {
color:#FFFFFF;
}
.useSummary caption a:link, .useSummary caption a:hover, .useSummary caption a:active,
.useSummary caption a:visited {
color:#1f389c;
}
.overviewSummary caption span, .memberSummary caption span, .typeSummary caption span,
.useSummary caption span, .constantsSummary caption span, .deprecatedSummary caption span,
.requiresSummary caption span, .packagesSummary caption span, .providesSummary caption span,
.usesSummary caption span {
white-space:nowrap;
padding-top:5px;
padding-left:12px;
padding-right:12px;
padding-bottom:7px;
display:inline-block;
float:left;
background-color:#F8981D;
border: none;
height:16px;
}
.memberSummary caption span.activeTableTab span, .packagesSummary caption span.activeTableTab span,
.overviewSummary caption span.activeTableTab span, .typeSummary caption span.activeTableTab span {
white-space:nowrap;
padding-top:5px;
padding-left:12px;
padding-right:12px;
margin-right:3px;
display:inline-block;
float:left;
background-color:#F8981D;
height:16px;
}
.memberSummary caption span.tableTab span, .packagesSummary caption span.tableTab span,
.overviewSummary caption span.tableTab span, .typeSummary caption span.tableTab span {
white-space:nowrap;
padding-top:5px;
padding-left:12px;
padding-right:12px;
margin-right:3px;
display:inline-block;
float:left;
background-color:#4D7A97;
height:16px;
}
.memberSummary caption span.tableTab, .memberSummary caption span.activeTableTab,
.packagesSummary caption span.tableTab, .packagesSummary caption span.activeTableTab,
.overviewSummary caption span.tableTab, .overviewSummary caption span.activeTableTab,
.typeSummary caption span.tableTab, .typeSummary caption span.activeTableTab {
padding-top:0px;
padding-left:0px;
padding-right:0px;
background-image:none;
float:none;
display:inline;
}
.overviewSummary .tabEnd, .memberSummary .tabEnd, .typeSummary .tabEnd,
.useSummary .tabEnd, .constantsSummary .tabEnd, .deprecatedSummary .tabEnd,
.requiresSummary .tabEnd, .packagesSummary .tabEnd, .providesSummary .tabEnd, .usesSummary .tabEnd {
display:none;
width:5px;
position:relative;
float:left;
background-color:#F8981D;
}
.memberSummary .activeTableTab .tabEnd, .packagesSummary .activeTableTab .tabEnd,
.overviewSummary .activeTableTab .tabEnd, .typeSummary .activeTableTab .tabEnd {
display:none;
width:5px;
margin-right:3px;
position:relative;
float:left;
background-color:#F8981D;
}
.memberSummary .tableTab .tabEnd, .packagesSummary .tableTab .tabEnd,
.overviewSummary .tableTab .tabEnd, .typeSummary .tableTab .tabEnd {
display:none;
width:5px;
margin-right:3px;
position:relative;
background-color:#4D7A97;
float:left;
}
.rowColor th, .altColor th {
font-weight:normal;
}
.overviewSummary td, .memberSummary td, .typeSummary td,
.useSummary td, .constantsSummary td, .deprecatedSummary td,
.requiresSummary td, .packagesSummary td, .providesSummary td, .usesSummary td {
text-align:left;
padding:0px 0px 12px 10px;
}
th.colFirst, th.colSecond, th.colLast, th.colConstructorName, th.colDeprecatedItemName, .useSummary th,
.constantsSummary th, .packagesSummary th, td.colFirst, td.colSecond, td.colLast, .useSummary td,
.constantsSummary td {
vertical-align:top;
padding-right:0px;
padding-top:8px;
padding-bottom:3px;
}
th.colFirst, th.colSecond, th.colLast, th.colConstructorName, th.colDeprecatedItemName, .constantsSummary th,
.packagesSummary th {
background:#dee3e9;
text-align:left;
padding:8px 3px 3px 7px;
}
td.colFirst, th.colFirst {
font-size:13px;
}
td.colSecond, th.colSecond, td.colLast, th.colConstructorName, th.colDeprecatedItemName, th.colLast {
font-size:13px;
}
.constantsSummary th, .packagesSummary th {
font-size:13px;
}
.providesSummary th.colFirst, .providesSummary th.colLast, .providesSummary td.colFirst,
.providesSummary td.colLast {
white-space:normal;
font-size:13px;
}
.overviewSummary td.colFirst, .overviewSummary th.colFirst,
.requiresSummary td.colFirst, .requiresSummary th.colFirst,
.packagesSummary td.colFirst, .packagesSummary td.colSecond, .packagesSummary th.colFirst, .packagesSummary th,
.usesSummary td.colFirst, .usesSummary th.colFirst,
.providesSummary td.colFirst, .providesSummary th.colFirst,
.memberSummary td.colFirst, .memberSummary th.colFirst,
.memberSummary td.colSecond, .memberSummary th.colSecond, .memberSummary th.colConstructorName,
.typeSummary td.colFirst, .typeSummary th.colFirst {
vertical-align:top;
}
.packagesSummary th.colLast, .packagesSummary td.colLast {
white-space:normal;
}
td.colFirst a:link, td.colFirst a:visited,
td.colSecond a:link, td.colSecond a:visited,
th.colFirst a:link, th.colFirst a:visited,
th.colSecond a:link, th.colSecond a:visited,
th.colConstructorName a:link, th.colConstructorName a:visited,
th.colDeprecatedItemName a:link, th.colDeprecatedItemName a:visited,
.constantValuesContainer td a:link, .constantValuesContainer td a:visited,
.allClassesContainer td a:link, .allClassesContainer td a:visited,
.allPackagesContainer td a:link, .allPackagesContainer td a:visited {
font-weight:bold;
}
.tableSubHeadingColor {
background-color:#EEEEFF;
}
.altColor, .altColor th {
background-color:#FFFFFF;
}
.rowColor, .rowColor th {
background-color:#EEEEEF;
}
/*
* Styles for contents.
*/
.description pre {
margin-top:0;
}
.deprecatedContent {
margin:0;
padding:10px 0;
}
.docSummary {
padding:0;
}
ul.blockList ul.blockList ul.blockList li.blockList h3 {
font-style:normal;
}
div.block {
font-size:14px;
font-family:'DejaVu Serif', Georgia, "Times New Roman", Times, serif;
}
td.colLast div {
padding-top:0px;
}
td.colLast a {
padding-bottom:3px;
}
/*
* Styles for formatting effect.
*/
.sourceLineNo {
color:green;
padding:0 30px 0 0;
}
h1.hidden {
visibility:hidden;
overflow:hidden;
font-size:10px;
}
.block {
display:block;
margin:3px 10px 2px 0px;
color:#474747;
}
.deprecatedLabel, .descfrmTypeLabel, .implementationLabel, .memberNameLabel, .memberNameLink,
.moduleLabelInPackage, .moduleLabelInType, .overrideSpecifyLabel, .packageLabelInType,
.packageHierarchyLabel, .paramLabel, .returnLabel, .seeLabel, .simpleTagLabel,
.throwsLabel, .typeNameLabel, .typeNameLink, .searchTagLink {
font-weight:bold;
}
.deprecationComment, .emphasizedPhrase, .interfaceName {
font-style:italic;
}
.deprecationBlock {
font-size:14px;
font-family:'DejaVu Serif', Georgia, "Times New Roman", Times, serif;
border-style:solid;
border-width:thin;
border-radius:10px;
padding:10px;
margin-bottom:10px;
margin-right:10px;
display:inline-block;
}
div.block div.deprecationComment, div.block div.block span.emphasizedPhrase,
div.block div.block span.interfaceName {
font-style:normal;
}
div.contentContainer ul.blockList li.blockList h2 {
padding-bottom:0px;
}
/*
* Styles for IFRAME.
*/
.mainContainer {
margin:0 auto;
padding:0;
height:100%;
width:100%;
position:fixed;
top:0;
left:0;
}
.leftContainer {
height:100%;
position:fixed;
width:320px;
}
.leftTop {
position:relative;
float:left;
width:315px;
top:0;
left:0;
height:30%;
border-right:6px solid #ccc;
border-bottom:6px solid #ccc;
}
.leftBottom {
position:relative;
float:left;
width:315px;
bottom:0;
left:0;
height:70%;
border-right:6px solid #ccc;
border-top:1px solid #000;
}
.rightContainer {
position:absolute;
left:320px;
top:0;
bottom:0;
height:100%;
right:0;
border-left:1px solid #000;
}
.rightIframe {
margin:0;
padding:0;
height:100%;
right:30px;
width:100%;
overflow:visible;
margin-bottom:30px;
}
/*
* Styles specific to HTML5 elements.
*/
main, nav, header, footer, section {
display:block;
}
/*
* Styles for javadoc search.
*/
.ui-autocomplete-category {
font-weight:bold;
font-size:15px;
padding:7px 0 7px 3px;
background-color:#4D7A97;
color:#FFFFFF;
}
.resultItem {
font-size:13px;
}
.ui-autocomplete {
max-height:85%;
max-width:65%;
overflow-y:scroll;
overflow-x:scroll;
white-space:nowrap;
box-shadow: 0 3px 6px rgba(0,0,0,0.16), 0 3px 6px rgba(0,0,0,0.23);
}
ul.ui-autocomplete {
position:fixed;
z-index:999999;
}
ul.ui-autocomplete li {
float:left;
clear:both;
width:100%;
}
.resultHighlight {
font-weight:bold;
}
#search {
background-image:url('resources/glass.png');
background-size:13px;
background-repeat:no-repeat;
background-position:2px 3px;
padding-left:20px;
position:relative;
right:-18px;
}
#reset {
background-color: rgb(255,255,255);
background-image:url('resources/x.png');
background-position:center;
background-repeat:no-repeat;
background-size:12px;
border:0 none;
width:16px;
height:17px;
position:relative;
left:-4px;
top:-4px;
font-size:0px;
}
.watermark {
color:#545454;
}
.searchTagDescResult {
font-style:italic;
font-size:11px;
}
.searchTagHolderResult {
font-style:italic;
font-size:12px;
}
.searchTagResult:before, .searchTagResult:target {
color:red;
}
.moduleGraph span {
display:none;
position:absolute;
}
.moduleGraph:hover span {
display:block;
margin: -100px 0 0 100px;
z-index: 1;
}
.methodSignature {
white-space:normal;
}
/*
* Styles for user-provided tables.
*
* borderless:
* No borders, vertical margins, styled caption.
* This style is provided for use with existing doc comments.
* In general, borderless tables should not be used for layout purposes.
*
* plain:
* Plain borders around table and cells, vertical margins, styled caption.
* Best for small tables or for complex tables for tables with cells that span
* rows and columns, when the "striped" style does not work well.
*
* striped:
* Borders around the table and vertical borders between cells, striped rows,
* vertical margins, styled caption.
* Best for tables that have a header row, and a body containing a series of simple rows.
*/
table.borderless,
table.plain,
table.striped {
margin-top: 10px;
margin-bottom: 10px;
}
table.borderless > caption,
table.plain > caption,
table.striped > caption {
font-weight: bold;
font-size: smaller;
}
table.borderless th, table.borderless td,
table.plain th, table.plain td,
table.striped th, table.striped td {
padding: 2px 5px;
}
table.borderless,
table.borderless > thead > tr > th, table.borderless > tbody > tr > th, table.borderless > tr > th,
table.borderless > thead > tr > td, table.borderless > tbody > tr > td, table.borderless > tr > td {
border: none;
}
table.borderless > thead > tr, table.borderless > tbody > tr, table.borderless > tr {
background-color: transparent;
}
table.plain {
border-collapse: collapse;
border: 1px solid black;
}
table.plain > thead > tr, table.plain > tbody tr, table.plain > tr {
background-color: transparent;
}
table.plain > thead > tr > th, table.plain > tbody > tr > th, table.plain > tr > th,
table.plain > thead > tr > td, table.plain > tbody > tr > td, table.plain > tr > td {
border: 1px solid black;
}
table.striped {
border-collapse: collapse;
border: 1px solid black;
}
table.striped > thead {
background-color: #E3E3E3;
}
table.striped > thead > tr > th, table.striped > thead > tr > td {
border: 1px solid black;
}
table.striped > tbody > tr:nth-child(even) {
background-color: #EEE
}
table.striped > tbody > tr:nth-child(odd) {
background-color: #FFF
}
table.striped > tbody > tr > th, table.striped > tbody > tr > td {
border-left: 1px solid black;
border-right: 1px solid black;
}
table.striped > tbody > tr > th {
font-weight: normal;
}

View file

@ -0,0 +1,73 @@
#BlueJ package file
dependency1.from=BenchmarkBase
dependency1.to=Set
dependency1.type=UsesDependency
dependency2.from=BenchmarkBase
dependency2.to=MeinBenchmark
dependency2.type=UsesDependency
editor.fx.0.height=739
editor.fx.0.width=1109
editor.fx.0.x=552
editor.fx.0.y=100
objectbench.height=128
objectbench.width=996
package.divider.horizontal=0.654
package.divider.vertical=0.7867298578199052
package.editor.height=491
package.editor.width=885
package.editor.x=469
package.editor.y=133
package.frame.height=733
package.frame.width=1036
package.numDependencies=2
package.numTargets=6
package.showExtends=true
package.showUses=true
project.charset=UTF-8
readme.height=58
readme.name=@README
readme.width=47
readme.x=10
readme.y=10
target1.height=50
target1.name=BenchmarkBase
target1.showInterface=false
target1.type=ClassTarget
target1.width=120
target1.x=60
target1.y=200
target2.height=50
target2.name=MeinBenchmark
target2.showInterface=false
target2.type=ClassTarget
target2.width=130
target2.x=150
target2.y=300
target3.height=50
target3.name=Set
target3.showInterface=false
target3.type=AbstractTarget
target3.width=80
target3.x=320
target3.y=20
target4.height=50
target4.name=SetVarianteC
target4.showInterface=false
target4.type=ClassTarget
target4.width=110
target4.x=440
target4.y=190
target5.height=50
target5.name=SetVarianteB
target5.showInterface=false
target5.type=ClassTarget
target5.width=110
target5.x=320
target5.y=190
target6.height=50
target6.name=SetVarianteA
target6.showInterface=false
target6.type=ClassTarget
target6.width=110
target6.x=200
target6.y=190

View file

@ -0,0 +1,3 @@
Quelle: https://github.com/afeinberg/sizeof
GNU Public License 2.0
Modifikationen von Rainer Helfrich

View file

@ -0,0 +1,124 @@
import java.util.*;
import net.sourceforge.sizeof.*;
import java.io.*;
import java.lang.reflect.*;
/**
* Testet Set-Varianten auf ihre Effizenz
*
* @author Rainer Helfrich
* @version November 2020
*/
public class BenchmarkBase
{
protected Set theSet;
Random zufallszahlen;
protected BenchmarkBase()
{
zufallszahlen = new Random();
}
protected void init(Class c) throws Exception
{
theSet = (Set)c.newInstance();
}
/**
* Wird benötigt, um in einem neuen Prozess den Speichertest durchzuführen.
* Sollte nicht direkt aufgerufen werden.
*/
public static void main(String[] args)
{
try
{
int anzahl = Integer.parseInt(args[0]);
Class c = Class.forName(args[1]);
MeinBenchmark b = new MeinBenchmark();
b.init(c);
Method m = b.getClass().getMethod(args[2], new Class[]{int.class});
m.invoke(b, new Object[]{anzahl});
System.out.println("@"+SizeOf.deepSizeOf((Object)b.theSet)+"@");
}
catch(Exception x)
{
System.out.println(x.getMessage());
}
}
/**
* Führt einen Laufzeittest aus. Wiederholt den Test 100 mal, um Ausreißer zu vermeiden.
* Sollte nicht direkt aufgerufen werden.
* @param typ Die Unterklasse von Set, die getestet werden soll
* @param methode Der Name der Methode in der Klasse MeinBenchmark, die zum Testen ausgeführt werden soll
* @param anzahl Ein Parameter für die Methode namens "methode", der z.B. die Anzahl der Operationen steuert
* @return Die Laufzeit des Tests in Mikrosekunden (µs)
*/
protected static int laufzeitTest(String typ, String methode, int anzahl)
{
try
{
Class c = Class.forName(typ);
MeinBenchmark b = new MeinBenchmark();
final int DURCHGAENGE = 100;
long totalTime = 0;
for (int i = 0; i < DURCHGAENGE; i++)
{
b.init(c);
Method m = b.getClass().getMethod(methode, new Class[]{int.class});
long vorher = System.nanoTime();
m.invoke(b, new Object[]{anzahl});
long nachher = System.nanoTime();
totalTime += (nachher - vorher) / 1000;
}
return (int)(totalTime / DURCHGAENGE);
}
catch(Exception x)
{
System.out.println(x.getMessage());
}
return -1;
}
/**
* Führt einen Speichertest aus. Sollte nicht direkt aufgerufen werden.
* @param typ Die Unterklasse von Set, die getestet werden soll
* @param methode Der Name der Methode in der Klasse MeinBenchmark, die zum Testen ausgeführt werden soll
* @param anzahl Ein Parameter für die Methode namens "methode", der z.B. die Anzahl der Operationen steuert
* @return Die Größe der Set in Bytes, nachdem die Testmethode ausgeführt wurde
*/
protected static int speicherTest(String typ, String methode, int anzahl)
{
try
{
Process process = new ProcessBuilder("java","-javaagent:./+libs/SizeOf.jar", MeinBenchmark.class.getName(), ""+anzahl, typ, methode).start();
InputStream is = process.getInputStream();
InputStreamReader isr = new InputStreamReader(is);
BufferedReader br = new BufferedReader(isr);
String line;
StringBuilder sb = new StringBuilder();
while ((line = br.readLine()) != null) {
sb.append(line);
}
String strOut = sb.toString();
int idx = strOut.indexOf("@");
if (idx < 0)
{
throw new Exception("Fehler: Ungültige Ausgabe:\n"+strOut);
}
int idx2 = strOut.indexOf("@", idx+1);
if (idx2 < 0)
{
throw new Exception("Fehler: Ungültige Ausgabe:\n"+strOut);
}
int n = Integer.parseInt(strOut.substring(idx+1, idx2));
return n;
}
catch(Exception x)
{
System.out.println(x.getMessage());
}
return -1;
}
}

View file

@ -0,0 +1,60 @@
/**
* Führt Leistungstests mit verschiedenen Set-Implementationen aus
*
* @author Rainer Helfrich
* @version November 2020
*/
public class MeinBenchmark extends BenchmarkBase
{
//# Die Klassen SetVarianteA, SetVarianteB und SetVarianteC sind drei verschiedene Implementationen
//# des ADTs Set: Mit ArrayList, mit Bitvektor und als Hashtable.
//# Sie verhalten sich logisch gleich, zeigen aber verschiedene Eigenschaften in Bezug auf
//# Laufzeit und Speicherbedarf (vgl. Unterricht).
//# Konstruieren Sie Testfälle, mit denen man den Unterschied der Implementationsvarianten
//# erkennen kann.
//# Rufen Sie die Methoden speicherTestAusfuehren bzw. laufzeitTestAusfuehren auf,
//# um die Messergebnisse zu sehen.
public void meinTest(int anzahl)
{
//# TODO: Konstruieren Sie einen Testfall, um herauszufinden, welche Implementation verwendet wird.
//# Der Parameter anzahl entspricht der Variablen anzahl in der Methode speicherTestAusfuehren bzw. laufzeitTestAusfuehren
//# Sie können die Methoden des Objekts theSet (ein Set-Objekt) verwenden.
for (int i = 0; i < anzahl; i++)
{
theSet.einfuegen(i);
}
}
/**
* Führt einen Speichertest mit z.B. 100 Elementen aus und gibt das Ergebnis auf der Konsole aus.
*/
public static void speicherTestAusfuehren()
{
int anzahl = 100;
String methodenName = "meinTest";
// Die Variable methodenName muss einer statischen Methode in dieser Klasse entsprechen
int sizeA = speicherTest("SetVarianteA", methodenName, anzahl);
int sizeB = speicherTest("SetVarianteB", methodenName, anzahl);
int sizeC = speicherTest("SetVarianteC", methodenName, anzahl);
System.out.println(String.format("%d Zahlen; SetVarianteA: %d Bytes; SetVarianteB: %d Bytes; SetVarianteC: %d Bytes",
anzahl, sizeA, sizeB, sizeC));
}
/**
* Führt einen Laufzeittest mit z.B. 1000 Elementen aus und gibt das Ergebnis auf der Konsole aus.
*/
public static void laufzeitTestAusfuehren()
{
int anzahl = 1000;
String methodenName = "meinTest";
// Die Variable methodenName muss einer statischen Methode in dieser Klasse entsprechen
long timeA = laufzeitTest("SetVarianteA", methodenName, anzahl);
long timeB = laufzeitTest("SetVarianteB", methodenName, anzahl);
long timeC = laufzeitTest("SetVarianteC", methodenName, anzahl);
System.out.println(String.format("%d Zahlen; SetVarianteA: %d µs; SetVarianteB: %d µs; SetVarianteC: %d µs",
anzahl, timeA, timeB, timeC));
}
}

View file

@ -0,0 +1,5 @@
PROJEKTBEZEICHNUNG: Set-Benchmark
PROJEKTZWECK: Konstruieren Sie einen Benchmark, um herauszufinden, um welche Implementation es sich bei einer Set handelt.
VERSION oder DATUM: November 2020
WIE IST DAS PROJEKT ZU STARTEN: Nachdem Sie in der Methode meinTest der Klasse MeinBenchmark einen Test definiert haben, rufen Sie eine der statischen Methoden speicherTestAusfuehren() oder laufzeitTestAusfuehren() auf.
AUTOR(EN): Rainer Helfrich, ZPG Informatik

View file

@ -0,0 +1,107 @@
/**
* Schnittstelle des ADTs Set
*
* @author Rainer Helfrich
* @version 26.9.2020
*/
public abstract class Set
{
/**
* Fügt einen neuen Wert in die Menge ein, falls er nicht bereits enthalten ist.
* @param wert Der einzufügende Wert
*/
public abstract void einfuegen(int wert);
/**
* Entfernt einen Wert aus der Menge, falls er enthalten ist.
* @param wert Der zu entfernende Wert
*/
public abstract void entfernen(int wert);
/**
* Gibt zurück, ob ein bestimmter Wert in der Menge enthalten ist.
* @param wert Der zu suchende Wert
*/
public abstract boolean enthaelt(int wert);
/**
* Bestimmt die Schnittmenge der Menge selbst und der Menge s.
* @param s Die Menge, mit der die Schnittmenge bestimmt werden soll
* @return Ein neues Set, das die Schnittmenge der beiden Mengen repräsentiert.
*/
public abstract Set schnittmenge(Set s);
/**
* Bestimmt die Vereinigungsmenge der Menge selbst und der Menge s.
* @param s Die Menge, mit der die Vereinigungsmenge bestimmt werden soll
* @return Ein neues Set, das die Vereinigungsmenge der beiden Mengen repräsentiert.
*/
public abstract Set vereinigungsmenge(Set s);
/**
* Gibt zurück, ob diese Menge eine Untermenge der Menge s ist.
* @param s Die Menge, die geprüft werden soll.
* @return true, wenn jedes Element dieser Menge in s enthalten ist; false sonst
*/
public abstract boolean untermenge(Set s);
/**
* Bestimmt die Differenzmenge der Menge selbst und der Menge s.
* @param s Die Menge, die von dieser Menge abgezogen werden soll.
* @return Ein neues Set, das alle Elemente dieser Menge enthält, die nicht in s enthalten sind.
*/
public abstract Set differenz(Set s);
/**
* Gibt die Mächtigkeit der Menge zurück
* @return Die Anzahl der Elemente in der Menge
*/
public abstract int anzahl();
/**
* Gibt zurück, ob die Menge kein Element enthält
* @return true, wenn die Menge leer ist; false sonst
*/
public abstract boolean istLeer();
protected abstract int[] alsArray();
/**
* Gibt zurück, ob diese Menge und s die gleichen Elemente enthalten
* @param s Die zu überprüfende Menge
* @return true, wenn beide Mengen die gleichen Elemente enthalten; false sonst
*/
public boolean gleich(Set s)
{
return untermenge(s) && s.untermenge(this);
}
/**
* Gibt die String-Darstellung der Menge (aufzählende Darstellung) zurück
* @return Ein String, der alle Elemente der Menge aufzählt.
*/
@Override
public String toString()
{
if (istLeer())
{
return "{ }";
}
StringBuilder sb = new StringBuilder();
for(int v : alsArray())
{
if (sb.length() == 0)
{
sb.append("{ ");
}
else
{
sb.append(", ");
}
sb.append(v);
}
sb.append(" }");
return sb.toString();
}
}

View file

@ -0,0 +1,240 @@
import java.util.ArrayList;
/**
* Set-Variante A
*
* @author Rainer Helfrich
* @version 27.9.2020
*/
public class SetVarianteA extends Set
{
private ArrayList<Integer>[] daten;
private int anzahl;
/**
* Erzeugt ein neues leeres Set
*/
public SetVarianteA()
{
this(10);
}
private SetVarianteA(int capacity)
{
if (capacity < 10)
{
capacity = 10;
}
daten = new ArrayList[capacity*2];
anzahl = 0;
}
protected int[] alsArray()
{
int[] ergebnis = new int[anzahl];
int index = 0;
for (ArrayList<Integer> l : daten)
{
if (l != null)
{
for (int x : l)
{
ergebnis[index] = x;
index++;
}
}
}
return ergebnis;
}
/**
* Gibt zurück, ob die Menge kein Element enthält
* @return true, wenn die Menge leer ist; false sonst
*/
public boolean istLeer()
{
for (ArrayList<Integer> l : daten)
{
if (l != null && !l.isEmpty())
{
return false;
}
}
return true;
}
/**
* Gibt die Mächtigkeit der Menge zurück
* @return Die Anzahl der Elemente in der Menge
*/
public int anzahl()
{
return anzahl;
}
/**
* Bestimmt die Differenzmenge der Menge selbst und der Menge s.
* @param s Die Menge, die von dieser Menge abgezogen werden soll.
* @return Ein neues Set, das alle Elemente dieser Menge enthält, die nicht in s enthalten sind.
*/
public Set differenz(Set s)
{
Set ergebnis = new SetVarianteA(anzahl);
for (ArrayList<Integer> l : daten)
{
if (l != null)
{
for (int n : l)
{
if (!s.enthaelt(n))
{
ergebnis.einfuegen(n);
}
}
}
}
return ergebnis;
}
/**
* Gibt zurück, ob diese Menge eine Untermenge der Menge s ist.
* @param s Die Menge, die geprüft werden soll.
* @return true, wenn jedes Element dieser Menge in s enthalten ist; false sonst
*/
public boolean untermenge(Set s)
{
for (ArrayList<Integer> l : daten)
{
if (l != null)
{
for (int n : l)
{
if (!s.enthaelt(n))
{
return false;
}
}
}
}
return true;
}
/**
* Bestimmt die Vereinigungsmenge der Menge selbst und der Menge s.
* @param s Die Menge, mit der die Vereinigungsmenge bestimmt werden soll
* @return Ein neues Set, das die Vereinigungsmenge der beiden Mengen repräsentiert.
*/
public Set vereinigungsmenge(Set s)
{
SetVarianteA ergebnis = new SetVarianteA(s.anzahl() + anzahl());
for (ArrayList<Integer> l : daten)
{
if (l != null)
{
for (int n : l)
{
ergebnis.einfuegen(n);
}
}
}
for (int n : s.alsArray())
{
ergebnis.einfuegen(n);
}
return ergebnis;
}
/**
* Fügt einen neuen Wert in die Menge ein, falls er nicht bereits enthalten ist.
* @param wert Der einzufügende Wert
*/
public void einfuegen(int n)
{
if ((double)anzahl / daten.length > 0.5)
{
rehash();
}
int hash = n % daten.length;
if (daten[hash] == null)
{
daten[hash] = new ArrayList<Integer>(2);
}
if (!daten[hash].contains(n))
{
anzahl++;
daten[hash].add(n);
}
}
private void rehash()
{
ArrayList<Integer>[] tmp = new ArrayList[2*daten.length+1];
for (ArrayList<Integer> l : daten)
{
if (l != null)
{
for (int n : l)
{
int hash = n % tmp.length;
if (tmp[hash] == null)
{
tmp[hash] = new ArrayList<Integer>(2);
}
tmp[hash].add(n);
}
}
}
daten = tmp;
}
/**
* Bestimmt die Schnittmenge der Menge selbst und der Menge s.
* @param s Die Menge, mit der die Schnittmenge bestimmt werden soll
* @return Ein neues Set, das die Schnittmenge der beiden Mengen repräsentiert.
*/
public Set schnittmenge(Set s)
{
SetVarianteA ergebnis = new SetVarianteA(anzahl);
for (ArrayList<Integer> l : daten)
{
if (l != null)
{
for (int n : l)
{
if (s.enthaelt(n))
{
ergebnis.einfuegen(n);
}
}
}
}
return ergebnis;
}
/**
* Gibt zurück, ob ein bestimmter Wert in der Menge enthalten ist.
* @param wert Der zu suchende Wert
*/
public boolean enthaelt(int n)
{
int hash = n % daten.length;
return daten[hash] != null && daten[hash].contains(n);
}
/**
* Entfernt einen Wert aus der Menge, falls er enthalten ist.
* @param wert Der zu entfernende Wert
*/
public void entfernen(int n)
{
int hash = n % daten.length;
if (daten[hash] != null)
{
if (daten[hash].contains(n))
{
anzahl--;
daten[hash].remove(new Integer(n));
}
}
}
}

View file

@ -0,0 +1,151 @@
import java.util.ArrayList;
/**
* Set-Variante B
*
* @author Rainer Helfrich
* @version 26.9.2020
*/
public class SetVarianteB extends Set
{
private ArrayList<Integer> daten;
/**
* Erzeugt ein neues leeres Set
*/
public SetVarianteB()
{
daten = new ArrayList<Integer>();
}
/**
* Gibt zurück, ob die Menge kein Element enthält
* @return true, wenn die Menge leer ist; false sonst
*/
public boolean istLeer()
{
return daten.isEmpty();
}
/**
* Gibt die Mächtigkeit der Menge zurück
* @return Die Anzahl der Elemente in der Menge
*/
public int anzahl()
{
return daten.size();
}
/**
* Bestimmt die Differenzmenge der Menge selbst und der Menge s.
* @param s Die Menge, die von dieser Menge abgezogen werden soll.
* @return Ein neues Set, das alle Elemente dieser Menge enthält, die nicht in s enthalten sind.
*/
public Set differenz(Set s)
{
Set ergebnis = new SetVarianteB();
for(int v : daten)
{
if (!s.enthaelt(v))
{
ergebnis.einfuegen(v);
}
}
return ergebnis;
}
/**
* Gibt zurück, ob diese Menge eine Untermenge der Menge s ist.
* @param s Die Menge, die geprüft werden soll.
* @return true, wenn jedes Element dieser Menge in s enthalten ist; false sonst
*/
public boolean untermenge(Set s)
{
for (int v : daten)
{
if (!s.enthaelt(v))
{
return false;
}
}
return true;
}
/**
* Bestimmt die Vereinigungsmenge der Menge selbst und der Menge s.
* @param s Die Menge, mit der die Vereinigungsmenge bestimmt werden soll
* @return Ein neues Set, das die Vereinigungsmenge der beiden Mengen repräsentiert.
*/
public Set vereinigungsmenge(Set s)
{
Set ergebnis = new SetVarianteB();
for (int v : daten)
{
ergebnis.einfuegen(v);
}
for (int v : s.alsArray())
{
ergebnis.einfuegen(v);
}
return ergebnis;
}
protected int[] alsArray()
{
int[] ergebnis = new int[anzahl()];
for (int i = 0; i < anzahl(); i++)
{
ergebnis[i] = daten.get(i);
}
return ergebnis;
}
/**
* Bestimmt die Schnittmenge der Menge selbst und der Menge s.
* @param s Die Menge, mit der die Schnittmenge bestimmt werden soll
* @return Ein neues Set, das die Schnittmenge der beiden Mengen repräsentiert.
*/
public Set schnittmenge(Set s)
{
Set ergebnis = new SetVarianteB();
for (int v : daten)
{
if (s.enthaelt(v))
{
ergebnis.einfuegen(v);
}
}
return ergebnis;
}
/**
* Gibt zurück, ob ein bestimmter Wert in der Menge enthalten ist.
* @param wert Der zu suchende Wert
*/
public boolean enthaelt(int x)
{
return daten.contains(x);
}
/**
* Entfernt einen Wert aus der Menge, falls er enthalten ist.
* @param wert Der zu entfernende Wert
*/
public void entfernen(int wert)
{
daten.remove(new Integer(wert));
}
/**
* Fügt einen neuen Wert in die Menge ein, falls er nicht bereits enthalten ist.
* @param wert Der einzufügende Wert
*/
public void einfuegen(int wert)
{
if (!daten.contains(wert))
{
daten.add(wert);
}
}
}

View file

@ -0,0 +1,294 @@
import java.util.ArrayList;
/**
* Set-Variante C
*
* @author Rainer Helfrich
* @version 26.9.2020
*/
public class SetVarianteC extends Set
{
private ArrayList<Integer> daten;
/**
* Erzeugt ein neues leeres Set
*/
public SetVarianteC()
{
daten = new ArrayList<Integer>();
}
protected int[] alsArray()
{
int[] ergebnis = new int[anzahl()];
int index = 0;
for (int i = 0; i < 32*daten.size(); i++)
{
if (enthaelt(i))
{
ergebnis[index] = i;
index++;
}
}
return ergebnis;
}
/**
* Gibt zurück, ob die Menge kein Element enthält
* @return true, wenn die Menge leer ist; false sonst
*/
public boolean istLeer()
{
for (int v : daten)
{
if (v != 0)
{
return false;
}
}
return true;
}
/**
* Gibt zurück, ob ein bestimmter Wert in der Menge enthalten ist.
* @param wert Der zu suchende Wert
*/
public boolean enthaelt(int x)
{
if (x >= 32*daten.size() || x < 0)
{
return false;
}
int i = x / 32;
int j = x % 32;
int mask = 1 << j;
return (daten.get(i) & mask) != 0;
}
/**
* Gibt die Mächtigkeit der Menge zurück
* @return Die Anzahl der Elemente in der Menge
*/
public int anzahl()
{
int laenge = 0;
for (int i : daten)
{
laenge += Integer.bitCount(i);
}
return laenge;
}
/**
* Bestimmt die Differenzmenge der Menge selbst und der Menge s.
* @param s Die Menge, die von dieser Menge abgezogen werden soll.
* @return Ein neues Set, das alle Elemente dieser Menge enthält, die nicht in s enthalten sind.
*/
public Set differenz(Set s)
{
SetVarianteC ergebnis = new SetVarianteC();
if (s instanceof SetVarianteC)
{
SetVarianteC bs = (SetVarianteC)s;
for (int i = 0; i < Math.min(daten.size(), bs.daten.size()); i++)
{
ergebnis.daten.add(daten.get(i) & ~(bs.daten.get(i)));
}
for (int i = bs.daten.size(); i < daten.size(); i++)
{
ergebnis.daten.add(daten.get(i));
}
}
else
{
for (int i = 0; i < 32*daten.size(); i++)
{
if (enthaelt(i) && !s.enthaelt(i))
{
ergebnis.einfuegen(i);
}
}
}
return ergebnis;
}
/**
* Fügt einen neuen Wert in die Menge ein, falls er nicht bereits enthalten ist.
* @param wert Der einzufügende Wert
*/
public void einfuegen(int x)
{
if (x >= 0)
{
int i = x / 32;
daten.ensureCapacity(i+1);
while(i >= daten.size())
{
daten.add(0);
}
int j = x % 32;
int mask = 1 << j;
daten.set(i, daten.get(i) | mask);
}
}
/**
* Gibt zurück, ob diese Menge eine Untermenge der Menge s ist.
* @param s Die Menge, die geprüft werden soll.
* @return true, wenn jedes Element dieser Menge in s enthalten ist; false sonst
*/
public boolean untermenge(Set s)
{
if (s instanceof SetVarianteC)
{
SetVarianteC bs = (SetVarianteC)s;
for (int i = 0; i < Math.min(daten.size(), bs.daten.size()); i++)
{
int a = daten.get(i);
int b = bs.daten.get(i);
if ((a & ~b) != 0)
{
return false;
}
}
for (int i = bs.daten.size(); i < daten.size(); i++)
{
if (daten.get(i) != 0)
{
return false;
}
}
return true;
}
else
{
for (int i = 0; i < 32*daten.size(); i++)
{
if (enthaelt(i) && !s.enthaelt(i))
{
return false;
}
}
return true;
}
}
/**
* Bestimmt die Vereinigungsmenge der Menge selbst und der Menge s.
* @param s Die Menge, mit der die Vereinigungsmenge bestimmt werden soll
* @return Ein neues Set, das die Vereinigungsmenge der beiden Mengen repräsentiert.
*/
public Set vereinigungsmenge(Set s)
{
SetVarianteC ergebnis = new SetVarianteC();
if (s instanceof SetVarianteC)
{
SetVarianteC bs = (SetVarianteC)s;
for (int i = 0; i < Math.min(daten.size(), bs.daten.size()); i++)
{
ergebnis.daten.add(daten.get(i) | bs.daten.get(i));
}
for (int i = daten.size(); i < bs.daten.size(); i++)
{
ergebnis.daten.add(bs.daten.get(i));
}
for (int i = bs.daten.size(); i < daten.size(); i++)
{
ergebnis.daten.add(daten.get(i));
}
}
else
{
int[] a = s.alsArray();
ergebnis.daten.addAll(daten);
for (int n : a)
{
ergebnis.einfuegen(n);
}
}
return ergebnis;
}
/**
* Bestimmt die Schnittmenge der Menge selbst und der Menge s.
* @param s Die Menge, mit der die Schnittmenge bestimmt werden soll
* @return Ein neues Set, das die Schnittmenge der beiden Mengen repräsentiert.
*/
public Set schnittmenge(Set s)
{
SetVarianteC ergebnis = new SetVarianteC();
if (s instanceof SetVarianteC)
{
SetVarianteC bs = (SetVarianteC)s;
for (int i = 0; i < Math.min(daten.size(), bs.daten.size()); i++)
{
ergebnis.daten.add(daten.get(i) & bs.daten.get(i));
}
}
else
{
for (int i = 0; i < 32*daten.size(); i++)
{
if (enthaelt(i) && s.enthaelt(i))
{
ergebnis.einfuegen(i);
}
}
}
return ergebnis;
}
/**
* Entfernt einen Wert aus der Menge, falls er enthalten ist.
* @param wert Der zu entfernende Wert
*/
public void entfernen(int x)
{
if (x < 32*daten.size() && x >= 0)
{
int i = x / 32;
int j = x % 32;
int mask = ~(1 << j);
daten.set(i, daten.get(i) & mask);
}
}
/**
* Gibt zurück, ob diese Menge und s die gleichen Elemente enthalten
* @param s Die zu überprüfende Menge
* @return true, wenn beide Mengen die gleichen Elemente enthalten; false sonst
*/
public boolean gleich(Set s)
{
if (s instanceof SetVarianteC)
{
SetVarianteC bs = (SetVarianteC)s;
for (int i = 0; i < Math.min(daten.size(), bs.daten.size()); i++)
{
if (daten.get(i) != bs.daten.get(i))
{
return false;
}
}
for (int i = daten.size(); i < bs.daten.size(); i++)
{
if (bs.daten.get(i) != 0)
{
return false;
}
}
for (int i = bs.daten.size(); i < daten.size(); i++)
{
if (daten.get(i) != 0)
{
return false;
}
}
return true;
}
else
{
return super.gleich(s);
}
}
}

View file

@ -0,0 +1,307 @@
<!DOCTYPE HTML>
<!-- NewPage -->
<html lang="de">
<head>
<!-- Generated by javadoc (11.0.2) on Thu Feb 11 14:20:12 CET 2021 -->
<title>BenchmarkBase</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="dc.created" content="2021-02-11">
<link rel="stylesheet" type="text/css" href="stylesheet.css" title="Style">
<script type="text/javascript" src="script.js"></script>
</head>
<body>
<script type="text/javascript"><!--
try {
if (location.href.indexOf('is-external=true') == -1) {
parent.document.title="BenchmarkBase";
}
}
catch(err) {
}
//-->
var data = {"i0":10,"i1":9,"i2":9,"i3":9};
var tabs = {65535:["t0","All Methods"],1:["t1","Static Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
var altColor = "altColor";
var rowColor = "rowColor";
var tableTab = "tableTab";
var activeTableTab = "activeTableTab";
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<!-- ======== START OF CLASS DATA ======== -->
<main role="main">
<div class="header">
<h2 title="Class BenchmarkBase" class="title">Class BenchmarkBase</h2>
</div>
<div class="contentContainer">
<ul class="inheritance">
<li>java.lang.Object</li>
<li>
<ul class="inheritance">
<li>BenchmarkBase</li>
</ul>
</li>
</ul>
<div class="description">
<ul class="blockList">
<li class="blockList">
<hr>
<pre>public class <span class="typeNameLabel">BenchmarkBase</span>
extends java.lang.Object</pre>
<div class="block">Testet Set-Varianten auf ihre Effizenz</div>
<dl>
<dt><span class="simpleTagLabel">Version:</span></dt>
<dd>November 2020</dd>
<dt><span class="simpleTagLabel">Author:</span></dt>
<dd>Rainer Helfrich</dd>
</dl>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- =========== FIELD SUMMARY =========== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="field.summary">
<!-- -->
</a>
<h3>Field Summary</h3>
<table class="memberSummary">
<caption><span>Fields</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colSecond" scope="col">Field</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tr class="altColor">
<td class="colFirst"><code>protected Set</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#theSet">theSet</a></span></code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>(package private) java.util.Random</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#zufallszahlen">zufallszahlen</a></span></code></th>
<td class="colLast">&nbsp;</td>
</tr>
</table>
</li>
</ul>
</section>
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="constructor.summary">
<!-- -->
</a>
<h3>Constructor Summary</h3>
<table class="memberSummary">
<caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Modifier</th>
<th class="colSecond" scope="col">Constructor</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tr class="altColor">
<td class="colFirst"><code>protected </code></td>
<th class="colConstructorName" scope="row"><code><span class="memberNameLink"><a href="#%3Cinit%3E()">BenchmarkBase</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
</table>
</li>
</ul>
</section>
<!-- ========== METHOD SUMMARY =========== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="method.summary">
<!-- -->
</a>
<h3>Method Summary</h3>
<table class="memberSummary">
<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t1" class="tableTab"><span><a href="javascript:show(1);">Static Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colSecond" scope="col">Method</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tr id="i0" class="altColor">
<td class="colFirst"><code>protected void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#init(java.lang.Class)">init</a></span>&#8203;(java.lang.Class&nbsp;c)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i1" class="rowColor">
<td class="colFirst"><code>protected static int</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#laufzeitTest(java.lang.String,java.lang.String,int)">laufzeitTest</a></span>&#8203;(java.lang.String&nbsp;typ,
java.lang.String&nbsp;methode,
int&nbsp;anzahl)</code></th>
<td class="colLast">
<div class="block">Führt einen Laufzeittest aus.</div>
</td>
</tr>
<tr id="i2" class="altColor">
<td class="colFirst"><code>static void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#main(java.lang.String%5B%5D)">main</a></span>&#8203;(java.lang.String[]&nbsp;args)</code></th>
<td class="colLast">
<div class="block">Wird benötigt, um in einem neuen Prozess den Speichertest durchzuführen.</div>
</td>
</tr>
<tr id="i3" class="rowColor">
<td class="colFirst"><code>protected static int</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#speicherTest(java.lang.String,java.lang.String,int)">speicherTest</a></span>&#8203;(java.lang.String&nbsp;typ,
java.lang.String&nbsp;methode,
int&nbsp;anzahl)</code></th>
<td class="colLast">
<div class="block">Führt einen Speichertest aus.</div>
</td>
</tr>
</table>
<ul class="blockList">
<li class="blockList"><a id="methods.inherited.from.class.java.lang.Object">
<!-- -->
</a>
<h3>Methods inherited from class&nbsp;java.lang.Object</h3>
<code>clone, equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</code></li>
</ul>
</li>
</ul>
</section>
</li>
</ul>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">
<!-- ============ FIELD DETAIL =========== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="field.detail">
<!-- -->
</a>
<h3>Field Detail</h3>
<a id="theSet">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>theSet</h4>
<pre>protected&nbsp;Set theSet</pre>
</li>
</ul>
<a id="zufallszahlen">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>zufallszahlen</h4>
<pre>java.util.Random zufallszahlen</pre>
</li>
</ul>
</li>
</ul>
</section>
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="constructor.detail">
<!-- -->
</a>
<h3>Constructor Detail</h3>
<a id="&lt;init&gt;()">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>BenchmarkBase</h4>
<pre>protected&nbsp;BenchmarkBase()</pre>
</li>
</ul>
</li>
</ul>
</section>
<!-- ============ METHOD DETAIL ========== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="method.detail">
<!-- -->
</a>
<h3>Method Detail</h3>
<a id="init(java.lang.Class)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>init</h4>
<pre class="methodSignature">protected&nbsp;void&nbsp;init&#8203;(java.lang.Class&nbsp;c)
throws java.lang.Exception</pre>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.Exception</code></dd>
</dl>
</li>
</ul>
<a id="main(java.lang.String[])">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>main</h4>
<pre class="methodSignature">public static&nbsp;void&nbsp;main&#8203;(java.lang.String[]&nbsp;args)</pre>
<div class="block">Wird benötigt, um in einem neuen Prozess den Speichertest durchzuführen.
Sollte nicht direkt aufgerufen werden.</div>
</li>
</ul>
<a id="laufzeitTest(java.lang.String,java.lang.String,int)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>laufzeitTest</h4>
<pre class="methodSignature">protected static&nbsp;int&nbsp;laufzeitTest&#8203;(java.lang.String&nbsp;typ,
java.lang.String&nbsp;methode,
int&nbsp;anzahl)</pre>
<div class="block">Führt einen Laufzeittest aus. Wiederholt den Test 100 mal, um Ausreißer zu vermeiden.
Sollte nicht direkt aufgerufen werden.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>typ</code> - Die Unterklasse von Set, die getestet werden soll</dd>
<dd><code>methode</code> - Der Name der Methode in der Klasse MeinBenchmark, die zum Testen ausgeführt werden soll</dd>
<dd><code>anzahl</code> - Ein Parameter für die Methode namens "methode", der z.B. die Anzahl der Operationen steuert</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>Die Laufzeit des Tests in Mikrosekunden (µs)</dd>
</dl>
</li>
</ul>
<a id="speicherTest(java.lang.String,java.lang.String,int)">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>speicherTest</h4>
<pre class="methodSignature">protected static&nbsp;int&nbsp;speicherTest&#8203;(java.lang.String&nbsp;typ,
java.lang.String&nbsp;methode,
int&nbsp;anzahl)</pre>
<div class="block">Führt einen Speichertest aus. Sollte nicht direkt aufgerufen werden.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>typ</code> - Die Unterklasse von Set, die getestet werden soll</dd>
<dd><code>methode</code> - Der Name der Methode in der Klasse MeinBenchmark, die zum Testen ausgeführt werden soll</dd>
<dd><code>anzahl</code> - Ein Parameter für die Methode namens "methode", der z.B. die Anzahl der Operationen steuert</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>Die Größe der Set in Bytes, nachdem die Testmethode ausgeführt wurde</dd>
</dl>
</li>
</ul>
</li>
</ul>
</section>
</li>
</ul>
</div>
</div>
</main>
<!-- ========= END OF CLASS DATA ========= -->
</body>
</html>

View file

@ -0,0 +1,230 @@
<!DOCTYPE HTML>
<!-- NewPage -->
<html lang="de">
<head>
<!-- Generated by javadoc (11.0.2) on Thu Feb 11 14:20:12 CET 2021 -->
<title>MeinBenchmark</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="dc.created" content="2021-02-11">
<link rel="stylesheet" type="text/css" href="stylesheet.css" title="Style">
<script type="text/javascript" src="script.js"></script>
</head>
<body>
<script type="text/javascript"><!--
try {
if (location.href.indexOf('is-external=true') == -1) {
parent.document.title="MeinBenchmark";
}
}
catch(err) {
}
//-->
var data = {"i0":9,"i1":10,"i2":9};
var tabs = {65535:["t0","All Methods"],1:["t1","Static Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
var altColor = "altColor";
var rowColor = "rowColor";
var tableTab = "tableTab";
var activeTableTab = "activeTableTab";
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<!-- ======== START OF CLASS DATA ======== -->
<main role="main">
<div class="header">
<h2 title="Class MeinBenchmark" class="title">Class MeinBenchmark</h2>
</div>
<div class="contentContainer">
<ul class="inheritance">
<li>java.lang.Object</li>
<li>
<ul class="inheritance">
<li>BenchmarkBase</li>
<li>
<ul class="inheritance">
<li>MeinBenchmark</li>
</ul>
</li>
</ul>
</li>
</ul>
<div class="description">
<ul class="blockList">
<li class="blockList">
<hr>
<pre>public class <span class="typeNameLabel">MeinBenchmark</span>
extends BenchmarkBase</pre>
<div class="block">Führt Leistungstests mit verschiedenen Set-Implementationen aus</div>
<dl>
<dt><span class="simpleTagLabel">Version:</span></dt>
<dd>November 2020</dd>
<dt><span class="simpleTagLabel">Author:</span></dt>
<dd>Rainer Helfrich</dd>
</dl>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- =========== FIELD SUMMARY =========== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="field.summary">
<!-- -->
</a>
<h3>Field Summary</h3>
<ul class="blockList">
<li class="blockList"><a id="fields.inherited.from.class.BenchmarkBase">
<!-- -->
</a>
<h3>Fields inherited from class&nbsp;BenchmarkBase</h3>
<code>theSet, zufallszahlen</code></li>
</ul>
</li>
</ul>
</section>
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="constructor.summary">
<!-- -->
</a>
<h3>Constructor Summary</h3>
<table class="memberSummary">
<caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Constructor</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tr class="altColor">
<th class="colConstructorName" scope="row"><code><span class="memberNameLink"><a href="#%3Cinit%3E()">MeinBenchmark</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
</table>
</li>
</ul>
</section>
<!-- ========== METHOD SUMMARY =========== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="method.summary">
<!-- -->
</a>
<h3>Method Summary</h3>
<table class="memberSummary">
<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t1" class="tableTab"><span><a href="javascript:show(1);">Static Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colSecond" scope="col">Method</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tr id="i0" class="altColor">
<td class="colFirst"><code>static void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#laufzeitTestAusfuehren()">laufzeitTestAusfuehren</a></span>()</code></th>
<td class="colLast">
<div class="block">Führt einen Laufzeittest mit z.B. 1000 Elementen aus und gibt das Ergebnis auf der Konsole aus.</div>
</td>
</tr>
<tr id="i1" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#meinTest(int)">meinTest</a></span>&#8203;(int&nbsp;anzahl)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i2" class="altColor">
<td class="colFirst"><code>static void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#speicherTestAusfuehren()">speicherTestAusfuehren</a></span>()</code></th>
<td class="colLast">
<div class="block">Führt einen Speichertest mit z.B. 100 Elementen aus und gibt das Ergebnis auf der Konsole aus.</div>
</td>
</tr>
</table>
<ul class="blockList">
<li class="blockList"><a id="methods.inherited.from.class.BenchmarkBase">
<!-- -->
</a>
<h3>Methods inherited from class&nbsp;BenchmarkBase</h3>
<code>init, laufzeitTest, main, speicherTest</code></li>
</ul>
<ul class="blockList">
<li class="blockList"><a id="methods.inherited.from.class.java.lang.Object">
<!-- -->
</a>
<h3>Methods inherited from class&nbsp;java.lang.Object</h3>
<code>clone, equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</code></li>
</ul>
</li>
</ul>
</section>
</li>
</ul>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="constructor.detail">
<!-- -->
</a>
<h3>Constructor Detail</h3>
<a id="&lt;init&gt;()">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>MeinBenchmark</h4>
<pre>public&nbsp;MeinBenchmark()</pre>
</li>
</ul>
</li>
</ul>
</section>
<!-- ============ METHOD DETAIL ========== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="method.detail">
<!-- -->
</a>
<h3>Method Detail</h3>
<a id="meinTest(int)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>meinTest</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;meinTest&#8203;(int&nbsp;anzahl)</pre>
</li>
</ul>
<a id="speicherTestAusfuehren()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>speicherTestAusfuehren</h4>
<pre class="methodSignature">public static&nbsp;void&nbsp;speicherTestAusfuehren()</pre>
<div class="block">Führt einen Speichertest mit z.B. 100 Elementen aus und gibt das Ergebnis auf der Konsole aus.</div>
</li>
</ul>
<a id="laufzeitTestAusfuehren()">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>laufzeitTestAusfuehren</h4>
<pre class="methodSignature">public static&nbsp;void&nbsp;laufzeitTestAusfuehren()</pre>
<div class="block">Führt einen Laufzeittest mit z.B. 1000 Elementen aus und gibt das Ergebnis auf der Konsole aus.</div>
</li>
</ul>
</li>
</ul>
</section>
</li>
</ul>
</div>
</div>
</main>
<!-- ========= END OF CLASS DATA ========= -->
</body>
</html>

View file

@ -0,0 +1,20 @@
<!DOCTYPE HTML>
<!-- NewPage -->
<html lang="de">
<head>
<!-- Generated by javadoc (11.0.2) on Thu Feb 11 14:20:12 CET 2021 -->
<title>All Classes</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="dc.created" content="2021-02-11">
<link rel="stylesheet" type="text/css" href="stylesheet.css" title="Style">
<script type="text/javascript" src="script.js"></script>
</head>
<body>
<h1 class="bar">All&nbsp;Classes</h1>
<main role="main" class="indexContainer">
<ul>
<li><a href="BenchmarkBase.html" title="class in &lt;Unnamed&gt;">BenchmarkBase</a></li>
</ul>
</main>
</body>
</html>

View file

@ -0,0 +1,35 @@
<!DOCTYPE HTML>
<!-- NewPage -->
<html lang="de">
<head>
<!-- Generated by javadoc (11.0.2) on Thu Feb 11 14:20:12 CET 2021 -->
<title>Constant Field Values</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="dc.created" content="2021-02-11">
<link rel="stylesheet" type="text/css" href="stylesheet.css" title="Style">
<script type="text/javascript" src="script.js"></script>
</head>
<body>
<script type="text/javascript"><!--
try {
if (location.href.indexOf('is-external=true') == -1) {
parent.document.title="Constant Field Values";
}
}
catch(err) {
}
//-->
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<main role="main">
<div class="header">
<h1 title="Constant Field Values" class="title">Constant Field Values</h1>
<section role="region">
<h2 title="Contents">Contents</h2>
</section>
</div>
</main>
</body>
</html>

View file

@ -0,0 +1 @@
unnamed package

View file

@ -0,0 +1,23 @@
<!DOCTYPE HTML>
<!-- NewPage -->
<html lang="de">
<head>
<!-- Generated by javadoc (11.0.2) on Thu Feb 11 14:20:12 CET 2021 -->
<title>Generated Documentation (Untitled)</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<script type="text/javascript">window.location.replace('BenchmarkBase.html')</script>
<noscript>
<meta http-equiv="Refresh" content="0;BenchmarkBase.html">
</noscript>
<link rel="canonical" href="BenchmarkBase.html">
<link rel="stylesheet" type="text/css" href="stylesheet.css" title="Style">
</head>
<body>
<main role="main">
<noscript>
<p>JavaScript is disabled on your browser.</p>
</noscript>
<p><a href="BenchmarkBase.html">BenchmarkBase.html</a></p>
</main>
</body>
</html>

View file

@ -0,0 +1,36 @@
Class documentation
<---- javadoc command: ---->
D:\Program Files\BlueJ\jdk\bin\javadoc.exe
-author
-version
-nodeprecated
-package
-Xdoclint:none
-noindex
-notree
-nohelp
-nonavbar
-source
11
-classpath
D:\Program Files\BlueJ\lib\bluejcore.jar;D:\Program Files\BlueJ\lib\junit-4.11.jar;D:\Program Files\BlueJ\lib\hamcrest-core-1.3.jar;D:\Program Files\BlueJ\lib\lang-stride.jar;D:\Program Files\BlueJ\lib\javafx\lib\javafx.base.jar;D:\Program Files\BlueJ\lib\javafx\lib\javafx.controls.jar;D:\Program Files\BlueJ\lib\javafx\lib\javafx.fxml.jar;D:\Program Files\BlueJ\lib\javafx\lib\javafx.graphics.jar;D:\Program Files\BlueJ\lib\javafx\lib\javafx.media.jar;D:\Program Files\BlueJ\lib\javafx\lib\javafx.properties.jar;D:\Program Files\BlueJ\lib\javafx\lib\javafx.swing.jar;D:\Program Files\BlueJ\lib\javafx\lib\javafx.web.jar;D:\Users\LeRainieur\Documents\Schule\Fortbildungen\Weiterentwicklung der Informatik ab 2015\Eigener Ablauf\Regionaltag 9+10\Turtle - Lösung\aplu5.jar;D:\Users\LeRainieur\Documents\Schule\Fortbildungen\ZPG Oberstufe\ADTs\Ergebnis\3_vorlagen_tauschordner\04_set (mit Sourcecode)\+libs\SizeOf.jar;D:\Users\LeRainieur\Documents\Schule\Fortbildungen\ZPG Oberstufe\ADTs\Ergebnis\3_vorlagen_tauschordner\04_set (mit Sourcecode)
-d
D:\Users\LeRainieur\Documents\Schule\Fortbildungen\ZPG Oberstufe\ADTs\Ergebnis\3_vorlagen_tauschordner\04_set (mit Sourcecode)\doc
-encoding
UTF-8
-charset
UTF-8
D:\Users\LeRainieur\Documents\Schule\Fortbildungen\ZPG Oberstufe\ADTs\Ergebnis\3_vorlagen_tauschordner\04_set (mit Sourcecode)\BenchmarkBase.java
<---- end of javadoc command ---->
Loading source file D:\Users\LeRainieur\Documents\Schule\Fortbildungen\ZPG Oberstufe\ADTs\Ergebnis\3_vorlagen_tauschordner\04_set (mit Sourcecode)\BenchmarkBase.java...
Constructing Javadoc information...
Standard Doclet version 11.0.2
Building tree for all the packages and classes...
Generating D:\Users\LeRainieur\Documents\Schule\Fortbildungen\ZPG Oberstufe\ADTs\Ergebnis\3_vorlagen_tauschordner\04_set (mit Sourcecode)\doc\BenchmarkBase.html...
Generating D:\Users\LeRainieur\Documents\Schule\Fortbildungen\ZPG Oberstufe\ADTs\Ergebnis\3_vorlagen_tauschordner\04_set (mit Sourcecode)\doc\package-summary.html...
Generating D:\Users\LeRainieur\Documents\Schule\Fortbildungen\ZPG Oberstufe\ADTs\Ergebnis\3_vorlagen_tauschordner\04_set (mit Sourcecode)\doc\constant-values.html...
Building index for all the packages and classes...
Building index for all classes...
Generating D:\Users\LeRainieur\Documents\Schule\Fortbildungen\ZPG Oberstufe\ADTs\Ergebnis\3_vorlagen_tauschordner\04_set (mit Sourcecode)\doc\allclasses.html...
Generating D:\Users\LeRainieur\Documents\Schule\Fortbildungen\ZPG Oberstufe\ADTs\Ergebnis\3_vorlagen_tauschordner\04_set (mit Sourcecode)\doc\allclasses.html...
Generating D:\Users\LeRainieur\Documents\Schule\Fortbildungen\ZPG Oberstufe\ADTs\Ergebnis\3_vorlagen_tauschordner\04_set (mit Sourcecode)\doc\index.html...

View file

@ -0,0 +1,53 @@
<!DOCTYPE HTML>
<!-- NewPage -->
<html lang="de">
<head>
<!-- Generated by javadoc (11.0.2) on Thu Feb 11 14:20:12 CET 2021 -->
<title>&lt;Unnamed&gt;</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="dc.created" content="2021-02-11">
<link rel="stylesheet" type="text/css" href="stylesheet.css" title="Style">
<script type="text/javascript" src="script.js"></script>
</head>
<body>
<script type="text/javascript"><!--
try {
if (location.href.indexOf('is-external=true') == -1) {
parent.document.title="<Unnamed>";
}
}
catch(err) {
}
//-->
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<main role="main">
<div class="header">
<h1 title="Package" class="title">Package&nbsp;&lt;Unnamed&gt;</h1>
</div>
<div class="contentContainer">
<ul class="blockList">
<li class="blockList">
<table class="typeSummary">
<caption><span>Class Summary</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Class</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tbody>
<tr class="altColor">
<th class="colFirst" scope="row"><a href="BenchmarkBase.html" title="class in &lt;Unnamed&gt;">BenchmarkBase</a></th>
<td class="colLast">
<div class="block">Testet Set-Varianten auf ihre Effizenz</div>
</td>
</tr>
</tbody>
</table>
</li>
</ul>
</div>
</main>
</body>
</html>

View file

@ -0,0 +1,139 @@
/*
* Copyright (c) 2013, 2018, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Oracle designates this
* particular file as subject to the "Classpath" exception as provided
* by Oracle in the LICENSE file that accompanied this code.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
var moduleSearchIndex;
var packageSearchIndex;
var typeSearchIndex;
var memberSearchIndex;
var tagSearchIndex;
function loadScripts(doc, tag) {
createElem(doc, tag, 'jquery/jszip/dist/jszip.js');
createElem(doc, tag, 'jquery/jszip-utils/dist/jszip-utils.js');
if (window.navigator.userAgent.indexOf('MSIE ') > 0 || window.navigator.userAgent.indexOf('Trident/') > 0 ||
window.navigator.userAgent.indexOf('Edge/') > 0) {
createElem(doc, tag, 'jquery/jszip-utils/dist/jszip-utils-ie.js');
}
createElem(doc, tag, 'search.js');
$.get(pathtoroot + "module-search-index.zip")
.done(function() {
JSZipUtils.getBinaryContent(pathtoroot + "module-search-index.zip", function(e, data) {
var zip = new JSZip(data);
zip.load(data);
moduleSearchIndex = JSON.parse(zip.file("module-search-index.json").asText());
});
});
$.get(pathtoroot + "package-search-index.zip")
.done(function() {
JSZipUtils.getBinaryContent(pathtoroot + "package-search-index.zip", function(e, data) {
var zip = new JSZip(data);
zip.load(data);
packageSearchIndex = JSON.parse(zip.file("package-search-index.json").asText());
});
});
$.get(pathtoroot + "type-search-index.zip")
.done(function() {
JSZipUtils.getBinaryContent(pathtoroot + "type-search-index.zip", function(e, data) {
var zip = new JSZip(data);
zip.load(data);
typeSearchIndex = JSON.parse(zip.file("type-search-index.json").asText());
});
});
$.get(pathtoroot + "member-search-index.zip")
.done(function() {
JSZipUtils.getBinaryContent(pathtoroot + "member-search-index.zip", function(e, data) {
var zip = new JSZip(data);
zip.load(data);
memberSearchIndex = JSON.parse(zip.file("member-search-index.json").asText());
});
});
$.get(pathtoroot + "tag-search-index.zip")
.done(function() {
JSZipUtils.getBinaryContent(pathtoroot + "tag-search-index.zip", function(e, data) {
var zip = new JSZip(data);
zip.load(data);
tagSearchIndex = JSON.parse(zip.file("tag-search-index.json").asText());
});
});
if (!moduleSearchIndex) {
createElem(doc, tag, 'module-search-index.js');
}
if (!packageSearchIndex) {
createElem(doc, tag, 'package-search-index.js');
}
if (!typeSearchIndex) {
createElem(doc, tag, 'type-search-index.js');
}
if (!memberSearchIndex) {
createElem(doc, tag, 'member-search-index.js');
}
if (!tagSearchIndex) {
createElem(doc, tag, 'tag-search-index.js');
}
$(window).resize(function() {
$('.navPadding').css('padding-top', $('.fixedNav').css("height"));
});
}
function createElem(doc, tag, path) {
var script = doc.createElement(tag);
var scriptElement = doc.getElementsByTagName(tag)[0];
script.src = pathtoroot + path;
scriptElement.parentNode.insertBefore(script, scriptElement);
}
function show(type) {
count = 0;
for (var key in data) {
var row = document.getElementById(key);
if ((data[key] & type) !== 0) {
row.style.display = '';
row.className = (count++ % 2) ? rowColor : altColor;
}
else
row.style.display = 'none';
}
updateTabs(type);
}
function updateTabs(type) {
for (var value in tabs) {
var sNode = document.getElementById(tabs[value][0]);
var spanNode = sNode.firstChild;
if (value == type) {
sNode.className = activeTableTab;
spanNode.innerHTML = tabs[value][1];
}
else {
sNode.className = tableTab;
spanNode.innerHTML = "<a href=\"javascript:show("+ value + ");\">" + tabs[value][1] + "</a>";
}
}
}
function updateModuleFrame(pFrame, cFrame) {
top.packageFrame.location = pFrame;
top.classFrame.location = cFrame;
}

View file

@ -0,0 +1,906 @@
/*
* Javadoc style sheet
*/
@import url('resources/fonts/dejavu.css');
/*
* Styles for individual HTML elements.
*
* These are styles that are specific to individual HTML elements. Changing them affects the style of a particular
* HTML element throughout the page.
*/
body {
background-color:#ffffff;
color:#353833;
font-family:'DejaVu Sans', Arial, Helvetica, sans-serif;
font-size:14px;
margin:0;
padding:0;
height:100%;
width:100%;
}
iframe {
margin:0;
padding:0;
height:100%;
width:100%;
overflow-y:scroll;
border:none;
}
a:link, a:visited {
text-decoration:none;
color:#4A6782;
}
a[href]:hover, a[href]:focus {
text-decoration:none;
color:#bb7a2a;
}
a[name] {
color:#353833;
}
a[name]:before, a[name]:target, a[id]:before, a[id]:target {
content:"";
display:inline-block;
position:relative;
padding-top:129px;
margin-top:-129px;
}
pre {
font-family:'DejaVu Sans Mono', monospace;
font-size:14px;
}
h1 {
font-size:20px;
}
h2 {
font-size:18px;
}
h3 {
font-size:16px;
font-style:italic;
}
h4 {
font-size:13px;
}
h5 {
font-size:12px;
}
h6 {
font-size:11px;
}
ul {
list-style-type:disc;
}
code, tt {
font-family:'DejaVu Sans Mono', monospace;
font-size:14px;
padding-top:4px;
margin-top:8px;
line-height:1.4em;
}
dt code {
font-family:'DejaVu Sans Mono', monospace;
font-size:14px;
padding-top:4px;
}
table tr td dt code {
font-family:'DejaVu Sans Mono', monospace;
font-size:14px;
vertical-align:top;
padding-top:4px;
}
sup {
font-size:8px;
}
/*
* Styles for HTML generated by javadoc.
*
* These are style classes that are used by the standard doclet to generate HTML documentation.
*/
/*
* Styles for document title and copyright.
*/
.clear {
clear:both;
height:0px;
overflow:hidden;
}
.aboutLanguage {
float:right;
padding:0px 21px;
font-size:11px;
z-index:200;
margin-top:-9px;
}
.legalCopy {
margin-left:.5em;
}
.bar a, .bar a:link, .bar a:visited, .bar a:active {
color:#FFFFFF;
text-decoration:none;
}
.bar a:hover, .bar a:focus {
color:#bb7a2a;
}
.tab {
background-color:#0066FF;
color:#ffffff;
padding:8px;
width:5em;
font-weight:bold;
}
/*
* Styles for navigation bar.
*/
.bar {
background-color:#4D7A97;
color:#FFFFFF;
padding:.8em .5em .4em .8em;
height:auto;/*height:1.8em;*/
font-size:11px;
margin:0;
}
.navPadding {
padding-top: 107px;
}
.fixedNav {
position:fixed;
width:100%;
z-index:999;
background-color:#ffffff;
}
.topNav {
background-color:#4D7A97;
color:#FFFFFF;
float:left;
padding:0;
width:100%;
clear:right;
height:2.8em;
padding-top:10px;
overflow:hidden;
font-size:12px;
}
.bottomNav {
margin-top:10px;
background-color:#4D7A97;
color:#FFFFFF;
float:left;
padding:0;
width:100%;
clear:right;
height:2.8em;
padding-top:10px;
overflow:hidden;
font-size:12px;
}
.subNav {
background-color:#dee3e9;
float:left;
width:100%;
overflow:hidden;
font-size:12px;
}
.subNav div {
clear:left;
float:left;
padding:0 0 5px 6px;
text-transform:uppercase;
}
ul.navList, ul.subNavList {
float:left;
margin:0 25px 0 0;
padding:0;
}
ul.navList li{
list-style:none;
float:left;
padding: 5px 6px;
text-transform:uppercase;
}
ul.navListSearch {
float:right;
margin:0 0 0 0;
padding:0;
}
ul.navListSearch li {
list-style:none;
float:right;
padding: 5px 6px;
text-transform:uppercase;
}
ul.navListSearch li label {
position:relative;
right:-16px;
}
ul.subNavList li {
list-style:none;
float:left;
}
.topNav a:link, .topNav a:active, .topNav a:visited, .bottomNav a:link, .bottomNav a:active, .bottomNav a:visited {
color:#FFFFFF;
text-decoration:none;
text-transform:uppercase;
}
.topNav a:hover, .bottomNav a:hover {
text-decoration:none;
color:#bb7a2a;
text-transform:uppercase;
}
.navBarCell1Rev {
background-color:#F8981D;
color:#253441;
margin: auto 5px;
}
.skipNav {
position:absolute;
top:auto;
left:-9999px;
overflow:hidden;
}
/*
* Styles for page header and footer.
*/
.header, .footer {
clear:both;
margin:0 20px;
padding:5px 0 0 0;
}
.indexNav {
position:relative;
font-size:12px;
background-color:#dee3e9;
}
.indexNav ul {
margin-top:0;
padding:5px;
}
.indexNav ul li {
display:inline;
list-style-type:none;
padding-right:10px;
text-transform:uppercase;
}
.indexNav h1 {
font-size:13px;
}
.title {
color:#2c4557;
margin:10px 0;
}
.subTitle {
margin:5px 0 0 0;
}
.header ul {
margin:0 0 15px 0;
padding:0;
}
.footer ul {
margin:20px 0 5px 0;
}
.header ul li, .footer ul li {
list-style:none;
font-size:13px;
}
/*
* Styles for headings.
*/
div.details ul.blockList ul.blockList ul.blockList li.blockList h4, div.details ul.blockList ul.blockList ul.blockListLast li.blockList h4 {
background-color:#dee3e9;
border:1px solid #d0d9e0;
margin:0 0 6px -8px;
padding:7px 5px;
}
ul.blockList ul.blockList ul.blockList li.blockList h3 {
background-color:#dee3e9;
border:1px solid #d0d9e0;
margin:0 0 6px -8px;
padding:7px 5px;
}
ul.blockList ul.blockList li.blockList h3 {
padding:0;
margin:15px 0;
}
ul.blockList li.blockList h2 {
padding:0px 0 20px 0;
}
/*
* Styles for page layout containers.
*/
.contentContainer, .sourceContainer, .classUseContainer, .serializedFormContainer, .constantValuesContainer,
.allClassesContainer, .allPackagesContainer {
clear:both;
padding:10px 20px;
position:relative;
}
.indexContainer {
margin:10px;
position:relative;
font-size:12px;
}
.indexContainer h2 {
font-size:13px;
padding:0 0 3px 0;
}
.indexContainer ul {
margin:0;
padding:0;
}
.indexContainer ul li {
list-style:none;
padding-top:2px;
}
.contentContainer .description dl dt, .contentContainer .details dl dt, .serializedFormContainer dl dt {
font-size:12px;
font-weight:bold;
margin:10px 0 0 0;
color:#4E4E4E;
}
.contentContainer .description dl dd, .contentContainer .details dl dd, .serializedFormContainer dl dd {
margin:5px 0 10px 0px;
font-size:14px;
font-family:'DejaVu Serif', Georgia, "Times New Roman", Times, serif;
}
.serializedFormContainer dl.nameValue dt {
margin-left:1px;
font-size:1.1em;
display:inline;
font-weight:bold;
}
.serializedFormContainer dl.nameValue dd {
margin:0 0 0 1px;
font-size:1.1em;
display:inline;
}
/*
* Styles for lists.
*/
li.circle {
list-style:circle;
}
ul.horizontal li {
display:inline;
font-size:0.9em;
}
ul.inheritance {
margin:0;
padding:0;
}
ul.inheritance li {
display:inline;
list-style:none;
}
ul.inheritance li ul.inheritance {
margin-left:15px;
padding-left:15px;
padding-top:1px;
}
ul.blockList, ul.blockListLast {
margin:10px 0 10px 0;
padding:0;
}
ul.blockList li.blockList, ul.blockListLast li.blockList {
list-style:none;
margin-bottom:15px;
line-height:1.4;
}
ul.blockList ul.blockList li.blockList, ul.blockList ul.blockListLast li.blockList {
padding:0px 20px 5px 10px;
border:1px solid #ededed;
background-color:#f8f8f8;
}
ul.blockList ul.blockList ul.blockList li.blockList, ul.blockList ul.blockList ul.blockListLast li.blockList {
padding:0 0 5px 8px;
background-color:#ffffff;
border:none;
}
ul.blockList ul.blockList ul.blockList ul.blockList li.blockList {
margin-left:0;
padding-left:0;
padding-bottom:15px;
border:none;
}
ul.blockList ul.blockList ul.blockList ul.blockList li.blockListLast {
list-style:none;
border-bottom:none;
padding-bottom:0;
}
table tr td dl, table tr td dl dt, table tr td dl dd {
margin-top:0;
margin-bottom:1px;
}
/*
* Styles for tables.
*/
.overviewSummary, .memberSummary, .typeSummary, .useSummary, .constantsSummary, .deprecatedSummary,
.requiresSummary, .packagesSummary, .providesSummary, .usesSummary {
width:100%;
border-spacing:0;
border-left:1px solid #EEE;
border-right:1px solid #EEE;
border-bottom:1px solid #EEE;
}
.overviewSummary, .memberSummary, .requiresSummary, .packagesSummary, .providesSummary, .usesSummary {
padding:0px;
}
.overviewSummary caption, .memberSummary caption, .typeSummary caption,
.useSummary caption, .constantsSummary caption, .deprecatedSummary caption,
.requiresSummary caption, .packagesSummary caption, .providesSummary caption, .usesSummary caption {
position:relative;
text-align:left;
background-repeat:no-repeat;
color:#253441;
font-weight:bold;
clear:none;
overflow:hidden;
padding:0px;
padding-top:10px;
padding-left:1px;
margin:0px;
white-space:pre;
}
.overviewSummary caption a:link, .memberSummary caption a:link, .typeSummary caption a:link,
.constantsSummary caption a:link, .deprecatedSummary caption a:link,
.requiresSummary caption a:link, .packagesSummary caption a:link, .providesSummary caption a:link,
.usesSummary caption a:link,
.overviewSummary caption a:hover, .memberSummary caption a:hover, .typeSummary caption a:hover,
.constantsSummary caption a:hover, .deprecatedSummary caption a:hover,
.requiresSummary caption a:hover, .packagesSummary caption a:hover, .providesSummary caption a:hover,
.usesSummary caption a:hover,
.overviewSummary caption a:active, .memberSummary caption a:active, .typeSummary caption a:active,
.constantsSummary caption a:active, .deprecatedSummary caption a:active,
.requiresSummary caption a:active, .packagesSummary caption a:active, .providesSummary caption a:active,
.usesSummary caption a:active,
.overviewSummary caption a:visited, .memberSummary caption a:visited, .typeSummary caption a:visited,
.constantsSummary caption a:visited, .deprecatedSummary caption a:visited,
.requiresSummary caption a:visited, .packagesSummary caption a:visited, .providesSummary caption a:visited,
.usesSummary caption a:visited {
color:#FFFFFF;
}
.useSummary caption a:link, .useSummary caption a:hover, .useSummary caption a:active,
.useSummary caption a:visited {
color:#1f389c;
}
.overviewSummary caption span, .memberSummary caption span, .typeSummary caption span,
.useSummary caption span, .constantsSummary caption span, .deprecatedSummary caption span,
.requiresSummary caption span, .packagesSummary caption span, .providesSummary caption span,
.usesSummary caption span {
white-space:nowrap;
padding-top:5px;
padding-left:12px;
padding-right:12px;
padding-bottom:7px;
display:inline-block;
float:left;
background-color:#F8981D;
border: none;
height:16px;
}
.memberSummary caption span.activeTableTab span, .packagesSummary caption span.activeTableTab span,
.overviewSummary caption span.activeTableTab span, .typeSummary caption span.activeTableTab span {
white-space:nowrap;
padding-top:5px;
padding-left:12px;
padding-right:12px;
margin-right:3px;
display:inline-block;
float:left;
background-color:#F8981D;
height:16px;
}
.memberSummary caption span.tableTab span, .packagesSummary caption span.tableTab span,
.overviewSummary caption span.tableTab span, .typeSummary caption span.tableTab span {
white-space:nowrap;
padding-top:5px;
padding-left:12px;
padding-right:12px;
margin-right:3px;
display:inline-block;
float:left;
background-color:#4D7A97;
height:16px;
}
.memberSummary caption span.tableTab, .memberSummary caption span.activeTableTab,
.packagesSummary caption span.tableTab, .packagesSummary caption span.activeTableTab,
.overviewSummary caption span.tableTab, .overviewSummary caption span.activeTableTab,
.typeSummary caption span.tableTab, .typeSummary caption span.activeTableTab {
padding-top:0px;
padding-left:0px;
padding-right:0px;
background-image:none;
float:none;
display:inline;
}
.overviewSummary .tabEnd, .memberSummary .tabEnd, .typeSummary .tabEnd,
.useSummary .tabEnd, .constantsSummary .tabEnd, .deprecatedSummary .tabEnd,
.requiresSummary .tabEnd, .packagesSummary .tabEnd, .providesSummary .tabEnd, .usesSummary .tabEnd {
display:none;
width:5px;
position:relative;
float:left;
background-color:#F8981D;
}
.memberSummary .activeTableTab .tabEnd, .packagesSummary .activeTableTab .tabEnd,
.overviewSummary .activeTableTab .tabEnd, .typeSummary .activeTableTab .tabEnd {
display:none;
width:5px;
margin-right:3px;
position:relative;
float:left;
background-color:#F8981D;
}
.memberSummary .tableTab .tabEnd, .packagesSummary .tableTab .tabEnd,
.overviewSummary .tableTab .tabEnd, .typeSummary .tableTab .tabEnd {
display:none;
width:5px;
margin-right:3px;
position:relative;
background-color:#4D7A97;
float:left;
}
.rowColor th, .altColor th {
font-weight:normal;
}
.overviewSummary td, .memberSummary td, .typeSummary td,
.useSummary td, .constantsSummary td, .deprecatedSummary td,
.requiresSummary td, .packagesSummary td, .providesSummary td, .usesSummary td {
text-align:left;
padding:0px 0px 12px 10px;
}
th.colFirst, th.colSecond, th.colLast, th.colConstructorName, th.colDeprecatedItemName, .useSummary th,
.constantsSummary th, .packagesSummary th, td.colFirst, td.colSecond, td.colLast, .useSummary td,
.constantsSummary td {
vertical-align:top;
padding-right:0px;
padding-top:8px;
padding-bottom:3px;
}
th.colFirst, th.colSecond, th.colLast, th.colConstructorName, th.colDeprecatedItemName, .constantsSummary th,
.packagesSummary th {
background:#dee3e9;
text-align:left;
padding:8px 3px 3px 7px;
}
td.colFirst, th.colFirst {
font-size:13px;
}
td.colSecond, th.colSecond, td.colLast, th.colConstructorName, th.colDeprecatedItemName, th.colLast {
font-size:13px;
}
.constantsSummary th, .packagesSummary th {
font-size:13px;
}
.providesSummary th.colFirst, .providesSummary th.colLast, .providesSummary td.colFirst,
.providesSummary td.colLast {
white-space:normal;
font-size:13px;
}
.overviewSummary td.colFirst, .overviewSummary th.colFirst,
.requiresSummary td.colFirst, .requiresSummary th.colFirst,
.packagesSummary td.colFirst, .packagesSummary td.colSecond, .packagesSummary th.colFirst, .packagesSummary th,
.usesSummary td.colFirst, .usesSummary th.colFirst,
.providesSummary td.colFirst, .providesSummary th.colFirst,
.memberSummary td.colFirst, .memberSummary th.colFirst,
.memberSummary td.colSecond, .memberSummary th.colSecond, .memberSummary th.colConstructorName,
.typeSummary td.colFirst, .typeSummary th.colFirst {
vertical-align:top;
}
.packagesSummary th.colLast, .packagesSummary td.colLast {
white-space:normal;
}
td.colFirst a:link, td.colFirst a:visited,
td.colSecond a:link, td.colSecond a:visited,
th.colFirst a:link, th.colFirst a:visited,
th.colSecond a:link, th.colSecond a:visited,
th.colConstructorName a:link, th.colConstructorName a:visited,
th.colDeprecatedItemName a:link, th.colDeprecatedItemName a:visited,
.constantValuesContainer td a:link, .constantValuesContainer td a:visited,
.allClassesContainer td a:link, .allClassesContainer td a:visited,
.allPackagesContainer td a:link, .allPackagesContainer td a:visited {
font-weight:bold;
}
.tableSubHeadingColor {
background-color:#EEEEFF;
}
.altColor, .altColor th {
background-color:#FFFFFF;
}
.rowColor, .rowColor th {
background-color:#EEEEEF;
}
/*
* Styles for contents.
*/
.description pre {
margin-top:0;
}
.deprecatedContent {
margin:0;
padding:10px 0;
}
.docSummary {
padding:0;
}
ul.blockList ul.blockList ul.blockList li.blockList h3 {
font-style:normal;
}
div.block {
font-size:14px;
font-family:'DejaVu Serif', Georgia, "Times New Roman", Times, serif;
}
td.colLast div {
padding-top:0px;
}
td.colLast a {
padding-bottom:3px;
}
/*
* Styles for formatting effect.
*/
.sourceLineNo {
color:green;
padding:0 30px 0 0;
}
h1.hidden {
visibility:hidden;
overflow:hidden;
font-size:10px;
}
.block {
display:block;
margin:3px 10px 2px 0px;
color:#474747;
}
.deprecatedLabel, .descfrmTypeLabel, .implementationLabel, .memberNameLabel, .memberNameLink,
.moduleLabelInPackage, .moduleLabelInType, .overrideSpecifyLabel, .packageLabelInType,
.packageHierarchyLabel, .paramLabel, .returnLabel, .seeLabel, .simpleTagLabel,
.throwsLabel, .typeNameLabel, .typeNameLink, .searchTagLink {
font-weight:bold;
}
.deprecationComment, .emphasizedPhrase, .interfaceName {
font-style:italic;
}
.deprecationBlock {
font-size:14px;
font-family:'DejaVu Serif', Georgia, "Times New Roman", Times, serif;
border-style:solid;
border-width:thin;
border-radius:10px;
padding:10px;
margin-bottom:10px;
margin-right:10px;
display:inline-block;
}
div.block div.deprecationComment, div.block div.block span.emphasizedPhrase,
div.block div.block span.interfaceName {
font-style:normal;
}
div.contentContainer ul.blockList li.blockList h2 {
padding-bottom:0px;
}
/*
* Styles for IFRAME.
*/
.mainContainer {
margin:0 auto;
padding:0;
height:100%;
width:100%;
position:fixed;
top:0;
left:0;
}
.leftContainer {
height:100%;
position:fixed;
width:320px;
}
.leftTop {
position:relative;
float:left;
width:315px;
top:0;
left:0;
height:30%;
border-right:6px solid #ccc;
border-bottom:6px solid #ccc;
}
.leftBottom {
position:relative;
float:left;
width:315px;
bottom:0;
left:0;
height:70%;
border-right:6px solid #ccc;
border-top:1px solid #000;
}
.rightContainer {
position:absolute;
left:320px;
top:0;
bottom:0;
height:100%;
right:0;
border-left:1px solid #000;
}
.rightIframe {
margin:0;
padding:0;
height:100%;
right:30px;
width:100%;
overflow:visible;
margin-bottom:30px;
}
/*
* Styles specific to HTML5 elements.
*/
main, nav, header, footer, section {
display:block;
}
/*
* Styles for javadoc search.
*/
.ui-autocomplete-category {
font-weight:bold;
font-size:15px;
padding:7px 0 7px 3px;
background-color:#4D7A97;
color:#FFFFFF;
}
.resultItem {
font-size:13px;
}
.ui-autocomplete {
max-height:85%;
max-width:65%;
overflow-y:scroll;
overflow-x:scroll;
white-space:nowrap;
box-shadow: 0 3px 6px rgba(0,0,0,0.16), 0 3px 6px rgba(0,0,0,0.23);
}
ul.ui-autocomplete {
position:fixed;
z-index:999999;
}
ul.ui-autocomplete li {
float:left;
clear:both;
width:100%;
}
.resultHighlight {
font-weight:bold;
}
#search {
background-image:url('resources/glass.png');
background-size:13px;
background-repeat:no-repeat;
background-position:2px 3px;
padding-left:20px;
position:relative;
right:-18px;
}
#reset {
background-color: rgb(255,255,255);
background-image:url('resources/x.png');
background-position:center;
background-repeat:no-repeat;
background-size:12px;
border:0 none;
width:16px;
height:17px;
position:relative;
left:-4px;
top:-4px;
font-size:0px;
}
.watermark {
color:#545454;
}
.searchTagDescResult {
font-style:italic;
font-size:11px;
}
.searchTagHolderResult {
font-style:italic;
font-size:12px;
}
.searchTagResult:before, .searchTagResult:target {
color:red;
}
.moduleGraph span {
display:none;
position:absolute;
}
.moduleGraph:hover span {
display:block;
margin: -100px 0 0 100px;
z-index: 1;
}
.methodSignature {
white-space:normal;
}
/*
* Styles for user-provided tables.
*
* borderless:
* No borders, vertical margins, styled caption.
* This style is provided for use with existing doc comments.
* In general, borderless tables should not be used for layout purposes.
*
* plain:
* Plain borders around table and cells, vertical margins, styled caption.
* Best for small tables or for complex tables for tables with cells that span
* rows and columns, when the "striped" style does not work well.
*
* striped:
* Borders around the table and vertical borders between cells, striped rows,
* vertical margins, styled caption.
* Best for tables that have a header row, and a body containing a series of simple rows.
*/
table.borderless,
table.plain,
table.striped {
margin-top: 10px;
margin-bottom: 10px;
}
table.borderless > caption,
table.plain > caption,
table.striped > caption {
font-weight: bold;
font-size: smaller;
}
table.borderless th, table.borderless td,
table.plain th, table.plain td,
table.striped th, table.striped td {
padding: 2px 5px;
}
table.borderless,
table.borderless > thead > tr > th, table.borderless > tbody > tr > th, table.borderless > tr > th,
table.borderless > thead > tr > td, table.borderless > tbody > tr > td, table.borderless > tr > td {
border: none;
}
table.borderless > thead > tr, table.borderless > tbody > tr, table.borderless > tr {
background-color: transparent;
}
table.plain {
border-collapse: collapse;
border: 1px solid black;
}
table.plain > thead > tr, table.plain > tbody tr, table.plain > tr {
background-color: transparent;
}
table.plain > thead > tr > th, table.plain > tbody > tr > th, table.plain > tr > th,
table.plain > thead > tr > td, table.plain > tbody > tr > td, table.plain > tr > td {
border: 1px solid black;
}
table.striped {
border-collapse: collapse;
border: 1px solid black;
}
table.striped > thead {
background-color: #E3E3E3;
}
table.striped > thead > tr > th, table.striped > thead > tr > td {
border: 1px solid black;
}
table.striped > tbody > tr:nth-child(even) {
background-color: #EEE
}
table.striped > tbody > tr:nth-child(odd) {
background-color: #FFF
}
table.striped > tbody > tr > th, table.striped > tbody > tr > td {
border-left: 1px solid black;
border-right: 1px solid black;
}
table.striped > tbody > tr > th {
font-weight: normal;
}

View file

@ -0,0 +1,73 @@
#BlueJ package file
dependency1.from=BenchmarkBase
dependency1.to=Set
dependency1.type=UsesDependency
dependency2.from=BenchmarkBase
dependency2.to=MeinBenchmark
dependency2.type=UsesDependency
editor.fx.0.height=739
editor.fx.0.width=1277
editor.fx.0.x=42
editor.fx.0.y=88
objectbench.height=128
objectbench.width=996
package.divider.horizontal=0.654
package.divider.vertical=0.7867298578199052
package.editor.height=491
package.editor.width=885
package.editor.x=735
package.editor.y=134
package.frame.height=733
package.frame.width=1036
package.numDependencies=2
package.numTargets=6
package.showExtends=true
package.showUses=true
project.charset=UTF-8
readme.height=58
readme.name=@README
readme.width=47
readme.x=10
readme.y=10
target1.height=50
target1.name=BenchmarkBase
target1.showInterface=true
target1.type=ClassTarget
target1.width=120
target1.x=60
target1.y=200
target2.height=50
target2.name=MeinBenchmark
target2.showInterface=false
target2.type=ClassTarget
target2.width=130
target2.x=150
target2.y=300
target3.height=50
target3.name=Set
target3.showInterface=false
target3.type=AbstractTarget
target3.width=80
target3.x=320
target3.y=20
target4.height=50
target4.name=SetVarianteC
target4.showInterface=false
target4.type=ClassTarget
target4.width=110
target4.x=440
target4.y=190
target5.height=50
target5.name=SetVarianteB
target5.showInterface=false
target5.type=ClassTarget
target5.width=110
target5.x=320
target5.y=190
target6.height=50
target6.name=SetVarianteA
target6.showInterface=false
target6.type=ClassTarget
target6.width=110
target6.x=200
target6.y=190

Binary file not shown.

View file

@ -0,0 +1,3 @@
Quelle: https://github.com/afeinberg/sizeof
GNU Public License 2.0
Modifikationen von Rainer Helfrich

View file

@ -0,0 +1,124 @@
import java.util.*;
import net.sourceforge.sizeof.*;
import java.io.*;
import java.lang.reflect.*;
/**
* Testet Set-Varianten auf ihre Effizenz
*
* @author Rainer Helfrich
* @version November 2020
*/
public class BenchmarkBase
{
protected Set theSet;
Random zufallszahlen;
protected BenchmarkBase()
{
zufallszahlen = new Random();
}
protected void init(Class c) throws Exception
{
theSet = (Set)c.newInstance();
}
/**
* Wird benötigt, um in einem neuen Prozess den Speichertest durchzuführen.
* Sollte nicht direkt aufgerufen werden.
*/
public static void main(String[] args)
{
try
{
int anzahl = Integer.parseInt(args[0]);
Class c = Class.forName(args[1]);
MeinBenchmark b = new MeinBenchmark();
b.init(c);
Method m = b.getClass().getMethod(args[2], new Class[]{int.class});
m.invoke(b, new Object[]{anzahl});
System.out.println("@"+SizeOf.deepSizeOf((Object)b.theSet)+"@");
}
catch(Exception x)
{
System.out.println(x.getMessage());
}
}
/**
* Führt einen Laufzeittest aus. Wiederholt den Test 100 mal, um Ausreißer zu vermeiden.
* Sollte nicht direkt aufgerufen werden.
* @param typ Die Unterklasse von Set, die getestet werden soll
* @param methode Der Name der Methode in der Klasse MeinBenchmark, die zum Testen ausgeführt werden soll
* @param anzahl Ein Parameter für die Methode namens "methode", der z.B. die Anzahl der Operationen steuert
* @return Die Laufzeit des Tests in Mikrosekunden (µs)
*/
protected static int laufzeitTest(String typ, String methode, int anzahl)
{
try
{
Class c = Class.forName(typ);
MeinBenchmark b = new MeinBenchmark();
final int DURCHGAENGE = 100;
long totalTime = 0;
for (int i = 0; i < DURCHGAENGE; i++)
{
b.init(c);
Method m = b.getClass().getMethod(methode, new Class[]{int.class});
long vorher = System.nanoTime();
m.invoke(b, new Object[]{anzahl});
long nachher = System.nanoTime();
totalTime += (nachher - vorher) / 1000;
}
return (int)(totalTime / DURCHGAENGE);
}
catch(Exception x)
{
System.out.println(x.getMessage());
}
return -1;
}
/**
* Führt einen Speichertest aus. Sollte nicht direkt aufgerufen werden.
* @param typ Die Unterklasse von Set, die getestet werden soll
* @param methode Der Name der Methode in der Klasse MeinBenchmark, die zum Testen ausgeführt werden soll
* @param anzahl Ein Parameter für die Methode namens "methode", der z.B. die Anzahl der Operationen steuert
* @return Die Größe der Set in Bytes, nachdem die Testmethode ausgeführt wurde
*/
protected static int speicherTest(String typ, String methode, int anzahl)
{
try
{
Process process = new ProcessBuilder("java","-javaagent:./+libs/SizeOf.jar", MeinBenchmark.class.getName(), ""+anzahl, typ, methode).start();
InputStream is = process.getInputStream();
InputStreamReader isr = new InputStreamReader(is);
BufferedReader br = new BufferedReader(isr);
String line;
StringBuilder sb = new StringBuilder();
while ((line = br.readLine()) != null) {
sb.append(line);
}
String strOut = sb.toString();
int idx = strOut.indexOf("@");
if (idx < 0)
{
throw new Exception("Fehler: Ungültige Ausgabe:\n"+strOut);
}
int idx2 = strOut.indexOf("@", idx+1);
if (idx2 < 0)
{
throw new Exception("Fehler: Ungültige Ausgabe:\n"+strOut);
}
int n = Integer.parseInt(strOut.substring(idx+1, idx2));
return n;
}
catch(Exception x)
{
System.out.println(x.getMessage());
}
return -1;
}
}

Binary file not shown.

View file

@ -0,0 +1,5 @@
PROJEKTBEZEICHNUNG: Set-Benchmark
PROJEKTZWECK: Konstruieren Sie einen Benchmark, um herauszufinden, um welche Implementation es sich bei einer Set handelt.
VERSION oder DATUM: November 2020
WIE IST DAS PROJEKT ZU STARTEN: Nachdem Sie in der Methode meinTest der Klasse MeinBenchmark einen Test definiert haben, rufen Sie eine der statischen Methoden speicherTestAusfuehren() oder laufzeitTestAusfuehren() auf.
AUTOR(EN): Rainer Helfrich, ZPG Informatik

View file

@ -0,0 +1,307 @@
<!DOCTYPE HTML>
<!-- NewPage -->
<html lang="de">
<head>
<!-- Generated by javadoc (11.0.2) on Mon Jan 11 13:04:17 CET 2021 -->
<title>BenchmarkBase</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="dc.created" content="2021-01-11">
<link rel="stylesheet" type="text/css" href="stylesheet.css" title="Style">
<script type="text/javascript" src="script.js"></script>
</head>
<body>
<script type="text/javascript"><!--
try {
if (location.href.indexOf('is-external=true') == -1) {
parent.document.title="BenchmarkBase";
}
}
catch(err) {
}
//-->
var data = {"i0":10,"i1":9,"i2":9,"i3":9};
var tabs = {65535:["t0","All Methods"],1:["t1","Static Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
var altColor = "altColor";
var rowColor = "rowColor";
var tableTab = "tableTab";
var activeTableTab = "activeTableTab";
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<!-- ======== START OF CLASS DATA ======== -->
<main role="main">
<div class="header">
<h2 title="Class BenchmarkBase" class="title">Class BenchmarkBase</h2>
</div>
<div class="contentContainer">
<ul class="inheritance">
<li>java.lang.Object</li>
<li>
<ul class="inheritance">
<li>BenchmarkBase</li>
</ul>
</li>
</ul>
<div class="description">
<ul class="blockList">
<li class="blockList">
<hr>
<pre>public class <span class="typeNameLabel">BenchmarkBase</span>
extends java.lang.Object</pre>
<div class="block">Testet Set-Varianten auf ihre Effizenz</div>
<dl>
<dt><span class="simpleTagLabel">Version:</span></dt>
<dd>November 2020</dd>
<dt><span class="simpleTagLabel">Author:</span></dt>
<dd>Rainer Helfrich</dd>
</dl>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- =========== FIELD SUMMARY =========== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="field.summary">
<!-- -->
</a>
<h3>Field Summary</h3>
<table class="memberSummary">
<caption><span>Fields</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colSecond" scope="col">Field</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tr class="altColor">
<td class="colFirst"><code>protected Set</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#theSet">theSet</a></span></code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><code>(package private) java.util.Random</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#zufallszahlen">zufallszahlen</a></span></code></th>
<td class="colLast">&nbsp;</td>
</tr>
</table>
</li>
</ul>
</section>
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="constructor.summary">
<!-- -->
</a>
<h3>Constructor Summary</h3>
<table class="memberSummary">
<caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Modifier</th>
<th class="colSecond" scope="col">Constructor</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tr class="altColor">
<td class="colFirst"><code>protected </code></td>
<th class="colConstructorName" scope="row"><code><span class="memberNameLink"><a href="#%3Cinit%3E()">BenchmarkBase</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
</table>
</li>
</ul>
</section>
<!-- ========== METHOD SUMMARY =========== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="method.summary">
<!-- -->
</a>
<h3>Method Summary</h3>
<table class="memberSummary">
<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t1" class="tableTab"><span><a href="javascript:show(1);">Static Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colSecond" scope="col">Method</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tr id="i0" class="altColor">
<td class="colFirst"><code>protected void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#init(java.lang.Class)">init</a></span>&#8203;(java.lang.Class&nbsp;c)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i1" class="rowColor">
<td class="colFirst"><code>protected static int</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#laufzeitTest(java.lang.String,java.lang.String,int)">laufzeitTest</a></span>&#8203;(java.lang.String&nbsp;typ,
java.lang.String&nbsp;methode,
int&nbsp;anzahl)</code></th>
<td class="colLast">
<div class="block">Führt einen Laufzeittest aus.</div>
</td>
</tr>
<tr id="i2" class="altColor">
<td class="colFirst"><code>static void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#main(java.lang.String%5B%5D)">main</a></span>&#8203;(java.lang.String[]&nbsp;args)</code></th>
<td class="colLast">
<div class="block">Wird benötigt, um in einem neuen Prozess den Speichertest durchzuführen.</div>
</td>
</tr>
<tr id="i3" class="rowColor">
<td class="colFirst"><code>protected static int</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#speicherTest(java.lang.String,java.lang.String,int)">speicherTest</a></span>&#8203;(java.lang.String&nbsp;typ,
java.lang.String&nbsp;methode,
int&nbsp;anzahl)</code></th>
<td class="colLast">
<div class="block">Führt einen Speichertest aus.</div>
</td>
</tr>
</table>
<ul class="blockList">
<li class="blockList"><a id="methods.inherited.from.class.java.lang.Object">
<!-- -->
</a>
<h3>Methods inherited from class&nbsp;java.lang.Object</h3>
<code>clone, equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</code></li>
</ul>
</li>
</ul>
</section>
</li>
</ul>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">
<!-- ============ FIELD DETAIL =========== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="field.detail">
<!-- -->
</a>
<h3>Field Detail</h3>
<a id="theSet">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>theSet</h4>
<pre>protected&nbsp;Set theSet</pre>
</li>
</ul>
<a id="zufallszahlen">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>zufallszahlen</h4>
<pre>java.util.Random zufallszahlen</pre>
</li>
</ul>
</li>
</ul>
</section>
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="constructor.detail">
<!-- -->
</a>
<h3>Constructor Detail</h3>
<a id="&lt;init&gt;()">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>BenchmarkBase</h4>
<pre>protected&nbsp;BenchmarkBase()</pre>
</li>
</ul>
</li>
</ul>
</section>
<!-- ============ METHOD DETAIL ========== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="method.detail">
<!-- -->
</a>
<h3>Method Detail</h3>
<a id="init(java.lang.Class)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>init</h4>
<pre class="methodSignature">protected&nbsp;void&nbsp;init&#8203;(java.lang.Class&nbsp;c)
throws java.lang.Exception</pre>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.Exception</code></dd>
</dl>
</li>
</ul>
<a id="main(java.lang.String[])">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>main</h4>
<pre class="methodSignature">public static&nbsp;void&nbsp;main&#8203;(java.lang.String[]&nbsp;args)</pre>
<div class="block">Wird benötigt, um in einem neuen Prozess den Speichertest durchzuführen.
Sollte nicht direkt aufgerufen werden.</div>
</li>
</ul>
<a id="laufzeitTest(java.lang.String,java.lang.String,int)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>laufzeitTest</h4>
<pre class="methodSignature">protected static&nbsp;int&nbsp;laufzeitTest&#8203;(java.lang.String&nbsp;typ,
java.lang.String&nbsp;methode,
int&nbsp;anzahl)</pre>
<div class="block">Führt einen Laufzeittest aus. Wiederholt den Test 100 mal, um Ausreißer zu vermeiden.
Sollte nicht direkt aufgerufen werden.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>typ</code> - Die Unterklasse von Set, die getestet werden soll</dd>
<dd><code>methode</code> - Der Name der Methode in der Klasse MeinBenchmark, die zum Testen ausgeführt werden soll</dd>
<dd><code>anzahl</code> - Ein Parameter für die Methode namens "methode", der z.B. die Anzahl der Operationen steuert</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>Die Laufzeit des Tests in Mikrosekunden (µs)</dd>
</dl>
</li>
</ul>
<a id="speicherTest(java.lang.String,java.lang.String,int)">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>speicherTest</h4>
<pre class="methodSignature">protected static&nbsp;int&nbsp;speicherTest&#8203;(java.lang.String&nbsp;typ,
java.lang.String&nbsp;methode,
int&nbsp;anzahl)</pre>
<div class="block">Führt einen Speichertest aus. Sollte nicht direkt aufgerufen werden.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>typ</code> - Die Unterklasse von Set, die getestet werden soll</dd>
<dd><code>methode</code> - Der Name der Methode in der Klasse MeinBenchmark, die zum Testen ausgeführt werden soll</dd>
<dd><code>anzahl</code> - Ein Parameter für die Methode namens "methode", der z.B. die Anzahl der Operationen steuert</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>Die Größe der Set in Bytes, nachdem die Testmethode ausgeführt wurde</dd>
</dl>
</li>
</ul>
</li>
</ul>
</section>
</li>
</ul>
</div>
</div>
</main>
<!-- ========= END OF CLASS DATA ========= -->
</body>
</html>

View file

@ -0,0 +1,230 @@
<!DOCTYPE HTML>
<!-- NewPage -->
<html lang="de">
<head>
<!-- Generated by javadoc (11.0.2) on Mon Jan 11 13:04:17 CET 2021 -->
<title>MeinBenchmark</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="dc.created" content="2021-01-11">
<link rel="stylesheet" type="text/css" href="stylesheet.css" title="Style">
<script type="text/javascript" src="script.js"></script>
</head>
<body>
<script type="text/javascript"><!--
try {
if (location.href.indexOf('is-external=true') == -1) {
parent.document.title="MeinBenchmark";
}
}
catch(err) {
}
//-->
var data = {"i0":9,"i1":10,"i2":9};
var tabs = {65535:["t0","All Methods"],1:["t1","Static Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
var altColor = "altColor";
var rowColor = "rowColor";
var tableTab = "tableTab";
var activeTableTab = "activeTableTab";
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<!-- ======== START OF CLASS DATA ======== -->
<main role="main">
<div class="header">
<h2 title="Class MeinBenchmark" class="title">Class MeinBenchmark</h2>
</div>
<div class="contentContainer">
<ul class="inheritance">
<li>java.lang.Object</li>
<li>
<ul class="inheritance">
<li>BenchmarkBase</li>
<li>
<ul class="inheritance">
<li>MeinBenchmark</li>
</ul>
</li>
</ul>
</li>
</ul>
<div class="description">
<ul class="blockList">
<li class="blockList">
<hr>
<pre>public class <span class="typeNameLabel">MeinBenchmark</span>
extends BenchmarkBase</pre>
<div class="block">Führt Leistungstests mit verschiedenen Set-Implementationen aus</div>
<dl>
<dt><span class="simpleTagLabel">Version:</span></dt>
<dd>November 2020</dd>
<dt><span class="simpleTagLabel">Author:</span></dt>
<dd>Rainer Helfrich</dd>
</dl>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- =========== FIELD SUMMARY =========== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="field.summary">
<!-- -->
</a>
<h3>Field Summary</h3>
<ul class="blockList">
<li class="blockList"><a id="fields.inherited.from.class.BenchmarkBase">
<!-- -->
</a>
<h3>Fields inherited from class&nbsp;BenchmarkBase</h3>
<code>theSet, zufallszahlen</code></li>
</ul>
</li>
</ul>
</section>
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="constructor.summary">
<!-- -->
</a>
<h3>Constructor Summary</h3>
<table class="memberSummary">
<caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Constructor</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tr class="altColor">
<th class="colConstructorName" scope="row"><code><span class="memberNameLink"><a href="#%3Cinit%3E()">MeinBenchmark</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
</table>
</li>
</ul>
</section>
<!-- ========== METHOD SUMMARY =========== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="method.summary">
<!-- -->
</a>
<h3>Method Summary</h3>
<table class="memberSummary">
<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t1" class="tableTab"><span><a href="javascript:show(1);">Static Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colSecond" scope="col">Method</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tr id="i0" class="altColor">
<td class="colFirst"><code>static void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#laufzeitTestAusfuehren()">laufzeitTestAusfuehren</a></span>()</code></th>
<td class="colLast">
<div class="block">Führt einen Laufzeittest mit 1000 Elementen aus und gibt das Ergebnis auf der Konsole aus.</div>
</td>
</tr>
<tr id="i1" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#meinTest(int)">meinTest</a></span>&#8203;(int&nbsp;n)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i2" class="altColor">
<td class="colFirst"><code>static void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#speicherTestAusfuehren()">speicherTestAusfuehren</a></span>()</code></th>
<td class="colLast">
<div class="block">Führt einen Speichertest mit 100 Elementen aus und gibt das Ergebnis auf der Konsole aus.</div>
</td>
</tr>
</table>
<ul class="blockList">
<li class="blockList"><a id="methods.inherited.from.class.BenchmarkBase">
<!-- -->
</a>
<h3>Methods inherited from class&nbsp;BenchmarkBase</h3>
<code>init, laufzeitTest, main, speicherTest</code></li>
</ul>
<ul class="blockList">
<li class="blockList"><a id="methods.inherited.from.class.java.lang.Object">
<!-- -->
</a>
<h3>Methods inherited from class&nbsp;java.lang.Object</h3>
<code>clone, equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</code></li>
</ul>
</li>
</ul>
</section>
</li>
</ul>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="constructor.detail">
<!-- -->
</a>
<h3>Constructor Detail</h3>
<a id="&lt;init&gt;()">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>MeinBenchmark</h4>
<pre>public&nbsp;MeinBenchmark()</pre>
</li>
</ul>
</li>
</ul>
</section>
<!-- ============ METHOD DETAIL ========== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="method.detail">
<!-- -->
</a>
<h3>Method Detail</h3>
<a id="meinTest(int)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>meinTest</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;meinTest&#8203;(int&nbsp;n)</pre>
</li>
</ul>
<a id="speicherTestAusfuehren()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>speicherTestAusfuehren</h4>
<pre class="methodSignature">public static&nbsp;void&nbsp;speicherTestAusfuehren()</pre>
<div class="block">Führt einen Speichertest mit 100 Elementen aus und gibt das Ergebnis auf der Konsole aus.</div>
</li>
</ul>
<a id="laufzeitTestAusfuehren()">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>laufzeitTestAusfuehren</h4>
<pre class="methodSignature">public static&nbsp;void&nbsp;laufzeitTestAusfuehren()</pre>
<div class="block">Führt einen Laufzeittest mit 1000 Elementen aus und gibt das Ergebnis auf der Konsole aus.</div>
</li>
</ul>
</li>
</ul>
</section>
</li>
</ul>
</div>
</div>
</main>
<!-- ========= END OF CLASS DATA ========= -->
</body>
</html>

View file

@ -0,0 +1,410 @@
<!DOCTYPE HTML>
<!-- NewPage -->
<html lang="de">
<head>
<!-- Generated by javadoc (11.0.2) on Mon Jan 11 13:04:17 CET 2021 -->
<title>Set</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="dc.created" content="2021-01-11">
<link rel="stylesheet" type="text/css" href="stylesheet.css" title="Style">
<script type="text/javascript" src="script.js"></script>
</head>
<body>
<script type="text/javascript"><!--
try {
if (location.href.indexOf('is-external=true') == -1) {
parent.document.title="Set";
}
}
catch(err) {
}
//-->
var data = {"i0":6,"i1":6,"i2":6,"i3":6,"i4":6,"i5":6,"i6":10,"i7":6,"i8":6,"i9":10,"i10":6,"i11":6};
var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],4:["t3","Abstract Methods"],8:["t4","Concrete Methods"]};
var altColor = "altColor";
var rowColor = "rowColor";
var tableTab = "tableTab";
var activeTableTab = "activeTableTab";
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<!-- ======== START OF CLASS DATA ======== -->
<main role="main">
<div class="header">
<h2 title="Class Set" class="title">Class Set</h2>
</div>
<div class="contentContainer">
<ul class="inheritance">
<li>java.lang.Object</li>
<li>
<ul class="inheritance">
<li>Set</li>
</ul>
</li>
</ul>
<div class="description">
<ul class="blockList">
<li class="blockList">
<hr>
<pre>public abstract class <span class="typeNameLabel">Set</span>
extends java.lang.Object</pre>
<div class="block">Schnittstelle des ADTs Set</div>
<dl>
<dt><span class="simpleTagLabel">Version:</span></dt>
<dd>26.9.2020</dd>
<dt><span class="simpleTagLabel">Author:</span></dt>
<dd>Rainer Helfrich</dd>
</dl>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="constructor.summary">
<!-- -->
</a>
<h3>Constructor Summary</h3>
<table class="memberSummary">
<caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Constructor</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tr class="altColor">
<th class="colConstructorName" scope="row"><code><span class="memberNameLink"><a href="#%3Cinit%3E()">Set</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
</table>
</li>
</ul>
</section>
<!-- ========== METHOD SUMMARY =========== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="method.summary">
<!-- -->
</a>
<h3>Method Summary</h3>
<table class="memberSummary">
<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t3" class="tableTab"><span><a href="javascript:show(4);">Abstract Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colSecond" scope="col">Method</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tr id="i0" class="altColor">
<td class="colFirst"><code>protected abstract int[]</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#alsArray()">alsArray</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i1" class="rowColor">
<td class="colFirst"><code>abstract int</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#anzahl()">anzahl</a></span>()</code></th>
<td class="colLast">
<div class="block">Gibt die Mächtigkeit der Menge zurück</div>
</td>
</tr>
<tr id="i2" class="altColor">
<td class="colFirst"><code>abstract <a href="Set.html" title="class in &lt;Unnamed&gt;">Set</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#differenz(Set)">differenz</a></span>&#8203;(<a href="Set.html" title="class in &lt;Unnamed&gt;">Set</a>&nbsp;s)</code></th>
<td class="colLast">
<div class="block">Bestimmt die Differenzmenge der Menge selbst und der Menge s.</div>
</td>
</tr>
<tr id="i3" class="rowColor">
<td class="colFirst"><code>abstract void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#einfuegen(int)">einfuegen</a></span>&#8203;(int&nbsp;wert)</code></th>
<td class="colLast">
<div class="block">Fügt einen neuen Wert in die Menge ein, falls er nicht bereits enthalten ist.</div>
</td>
</tr>
<tr id="i4" class="altColor">
<td class="colFirst"><code>abstract void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#entfernen(int)">entfernen</a></span>&#8203;(int&nbsp;wert)</code></th>
<td class="colLast">
<div class="block">Entfernt einen Wert aus der Menge, falls er enthalten ist.</div>
</td>
</tr>
<tr id="i5" class="rowColor">
<td class="colFirst"><code>abstract boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#enthaelt(int)">enthaelt</a></span>&#8203;(int&nbsp;wert)</code></th>
<td class="colLast">
<div class="block">Gibt zurück, ob ein bestimmter Wert in der Menge enthalten ist.</div>
</td>
</tr>
<tr id="i6" class="altColor">
<td class="colFirst"><code>boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#gleich(Set)">gleich</a></span>&#8203;(<a href="Set.html" title="class in &lt;Unnamed&gt;">Set</a>&nbsp;s)</code></th>
<td class="colLast">
<div class="block">Gibt zurück, ob diese Menge und s die gleichen Elemente enthalten</div>
</td>
</tr>
<tr id="i7" class="rowColor">
<td class="colFirst"><code>abstract boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#istLeer()">istLeer</a></span>()</code></th>
<td class="colLast">
<div class="block">Gibt zurück, ob die Menge kein Element enthält</div>
</td>
</tr>
<tr id="i8" class="altColor">
<td class="colFirst"><code>abstract <a href="Set.html" title="class in &lt;Unnamed&gt;">Set</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#schnittmenge(Set)">schnittmenge</a></span>&#8203;(<a href="Set.html" title="class in &lt;Unnamed&gt;">Set</a>&nbsp;s)</code></th>
<td class="colLast">
<div class="block">Bestimmt die Schnittmenge der Menge selbst und der Menge s.</div>
</td>
</tr>
<tr id="i9" class="rowColor">
<td class="colFirst"><code>java.lang.String</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#toString()">toString</a></span>()</code></th>
<td class="colLast">
<div class="block">Gibt die String-Darstellung der Menge (aufzählende Darstellung) zurück</div>
</td>
</tr>
<tr id="i10" class="altColor">
<td class="colFirst"><code>abstract boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#untermenge(Set)">untermenge</a></span>&#8203;(<a href="Set.html" title="class in &lt;Unnamed&gt;">Set</a>&nbsp;s)</code></th>
<td class="colLast">
<div class="block">Gibt zurück, ob diese Menge eine Untermenge der Menge s ist.</div>
</td>
</tr>
<tr id="i11" class="rowColor">
<td class="colFirst"><code>abstract <a href="Set.html" title="class in &lt;Unnamed&gt;">Set</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#vereinigungsmenge(Set)">vereinigungsmenge</a></span>&#8203;(<a href="Set.html" title="class in &lt;Unnamed&gt;">Set</a>&nbsp;s)</code></th>
<td class="colLast">
<div class="block">Bestimmt die Vereinigungsmenge der Menge selbst und der Menge s.</div>
</td>
</tr>
</table>
<ul class="blockList">
<li class="blockList"><a id="methods.inherited.from.class.java.lang.Object">
<!-- -->
</a>
<h3>Methods inherited from class&nbsp;java.lang.Object</h3>
<code>clone, equals, getClass, hashCode, notify, notifyAll, wait, wait, wait</code></li>
</ul>
</li>
</ul>
</section>
</li>
</ul>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="constructor.detail">
<!-- -->
</a>
<h3>Constructor Detail</h3>
<a id="&lt;init&gt;()">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>Set</h4>
<pre>public&nbsp;Set()</pre>
</li>
</ul>
</li>
</ul>
</section>
<!-- ============ METHOD DETAIL ========== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="method.detail">
<!-- -->
</a>
<h3>Method Detail</h3>
<a id="einfuegen(int)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>einfuegen</h4>
<pre class="methodSignature">public abstract&nbsp;void&nbsp;einfuegen&#8203;(int&nbsp;wert)</pre>
<div class="block">Fügt einen neuen Wert in die Menge ein, falls er nicht bereits enthalten ist.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>wert</code> - Der einzufügende Wert</dd>
</dl>
</li>
</ul>
<a id="entfernen(int)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>entfernen</h4>
<pre class="methodSignature">public abstract&nbsp;void&nbsp;entfernen&#8203;(int&nbsp;wert)</pre>
<div class="block">Entfernt einen Wert aus der Menge, falls er enthalten ist.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>wert</code> - Der zu entfernende Wert</dd>
</dl>
</li>
</ul>
<a id="enthaelt(int)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>enthaelt</h4>
<pre class="methodSignature">public abstract&nbsp;boolean&nbsp;enthaelt&#8203;(int&nbsp;wert)</pre>
<div class="block">Gibt zurück, ob ein bestimmter Wert in der Menge enthalten ist.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>wert</code> - Der zu suchende Wert</dd>
</dl>
</li>
</ul>
<a id="schnittmenge(Set)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>schnittmenge</h4>
<pre class="methodSignature">public abstract&nbsp;<a href="Set.html" title="class in &lt;Unnamed&gt;">Set</a>&nbsp;schnittmenge&#8203;(<a href="Set.html" title="class in &lt;Unnamed&gt;">Set</a>&nbsp;s)</pre>
<div class="block">Bestimmt die Schnittmenge der Menge selbst und der Menge s.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>s</code> - Die Menge, mit der die Schnittmenge bestimmt werden soll</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>Eine neue Set, die die Schnittmenge der beiden Mengen repräsentiert.</dd>
</dl>
</li>
</ul>
<a id="vereinigungsmenge(Set)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>vereinigungsmenge</h4>
<pre class="methodSignature">public abstract&nbsp;<a href="Set.html" title="class in &lt;Unnamed&gt;">Set</a>&nbsp;vereinigungsmenge&#8203;(<a href="Set.html" title="class in &lt;Unnamed&gt;">Set</a>&nbsp;s)</pre>
<div class="block">Bestimmt die Vereinigungsmenge der Menge selbst und der Menge s.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>s</code> - Die Menge, mit der die Vereinigungsmenge bestimmt werden soll</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>Eine neue Set, die die Vereinigungsmenge der beiden Mengen repräsentiert.</dd>
</dl>
</li>
</ul>
<a id="untermenge(Set)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>untermenge</h4>
<pre class="methodSignature">public abstract&nbsp;boolean&nbsp;untermenge&#8203;(<a href="Set.html" title="class in &lt;Unnamed&gt;">Set</a>&nbsp;s)</pre>
<div class="block">Gibt zurück, ob diese Menge eine Untermenge der Menge s ist.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>s</code> - Die Menge, die geprüft werden soll.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>true, wenn jedes Element dieser Menge in s enthalten ist; false sonst</dd>
</dl>
</li>
</ul>
<a id="differenz(Set)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>differenz</h4>
<pre class="methodSignature">public abstract&nbsp;<a href="Set.html" title="class in &lt;Unnamed&gt;">Set</a>&nbsp;differenz&#8203;(<a href="Set.html" title="class in &lt;Unnamed&gt;">Set</a>&nbsp;s)</pre>
<div class="block">Bestimmt die Differenzmenge der Menge selbst und der Menge s.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>s</code> - Die Menge, die von dieser Menge abgezogen werden soll.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>Eine neue Set, die alle Elemente dieser Menge enthält, die nicht in s enthalten sind.</dd>
</dl>
</li>
</ul>
<a id="anzahl()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>anzahl</h4>
<pre class="methodSignature">public abstract&nbsp;int&nbsp;anzahl()</pre>
<div class="block">Gibt die Mächtigkeit der Menge zurück</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>Die Anzahl der Elemente in der Menge</dd>
</dl>
</li>
</ul>
<a id="istLeer()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>istLeer</h4>
<pre class="methodSignature">public abstract&nbsp;boolean&nbsp;istLeer()</pre>
<div class="block">Gibt zurück, ob die Menge kein Element enthält</div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>true, wenn die Menge leer ist; false sonst</dd>
</dl>
</li>
</ul>
<a id="alsArray()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>alsArray</h4>
<pre class="methodSignature">protected abstract&nbsp;int[]&nbsp;alsArray()</pre>
</li>
</ul>
<a id="gleich(Set)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>gleich</h4>
<pre class="methodSignature">public&nbsp;boolean&nbsp;gleich&#8203;(<a href="Set.html" title="class in &lt;Unnamed&gt;">Set</a>&nbsp;s)</pre>
<div class="block">Gibt zurück, ob diese Menge und s die gleichen Elemente enthalten</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>s</code> - Die zu überprüfende Menge</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>true, wenn beide Mengen die gleichen Elemente enthalten; false sonst</dd>
</dl>
</li>
</ul>
<a id="toString()">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>toString</h4>
<pre class="methodSignature">public&nbsp;java.lang.String&nbsp;toString()</pre>
<div class="block">Gibt die String-Darstellung der Menge (aufzählende Darstellung) zurück</div>
<dl>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code>toString</code>&nbsp;in class&nbsp;<code>java.lang.Object</code></dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>Ein String, der alle Elemente der Menge aufzählt.</dd>
</dl>
</li>
</ul>
</li>
</ul>
</section>
</li>
</ul>
</div>
</div>
</main>
<!-- ========= END OF CLASS DATA ========= -->
</body>
</html>

View file

@ -0,0 +1,401 @@
<!DOCTYPE HTML>
<!-- NewPage -->
<html lang="de">
<head>
<!-- Generated by javadoc (11.0.2) on Mon Jan 11 13:04:17 CET 2021 -->
<title>SetVarianteA</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="dc.created" content="2021-01-11">
<link rel="stylesheet" type="text/css" href="stylesheet.css" title="Style">
<script type="text/javascript" src="script.js"></script>
</head>
<body>
<script type="text/javascript"><!--
try {
if (location.href.indexOf('is-external=true') == -1) {
parent.document.title="SetVarianteA";
}
}
catch(err) {
}
//-->
var data = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10,"i7":10,"i8":10,"i9":10};
var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
var altColor = "altColor";
var rowColor = "rowColor";
var tableTab = "tableTab";
var activeTableTab = "activeTableTab";
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<!-- ======== START OF CLASS DATA ======== -->
<main role="main">
<div class="header">
<h2 title="Class SetVarianteA" class="title">Class SetVarianteA</h2>
</div>
<div class="contentContainer">
<ul class="inheritance">
<li>java.lang.Object</li>
<li>
<ul class="inheritance">
<li>Set</li>
<li>
<ul class="inheritance">
<li>SetVarianteA</li>
</ul>
</li>
</ul>
</li>
</ul>
<div class="description">
<ul class="blockList">
<li class="blockList">
<hr>
<pre>public class <span class="typeNameLabel">SetVarianteA</span>
extends Set</pre>
<div class="block">Set-Variante A</div>
<dl>
<dt><span class="simpleTagLabel">Version:</span></dt>
<dd>27.9.2020</dd>
<dt><span class="simpleTagLabel">Author:</span></dt>
<dd>Rainer Helfrich</dd>
</dl>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="constructor.summary">
<!-- -->
</a>
<h3>Constructor Summary</h3>
<table class="memberSummary">
<caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Constructor</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tr class="altColor">
<th class="colConstructorName" scope="row"><code><span class="memberNameLink"><a href="#%3Cinit%3E()">SetVarianteA</a></span>()</code></th>
<td class="colLast">
<div class="block">Erzeugt eine neue leere Set</div>
</td>
</tr>
</table>
</li>
</ul>
</section>
<!-- ========== METHOD SUMMARY =========== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="method.summary">
<!-- -->
</a>
<h3>Method Summary</h3>
<table class="memberSummary">
<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colSecond" scope="col">Method</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tr id="i0" class="altColor">
<td class="colFirst"><code>protected int[]</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#alsArray()">alsArray</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i1" class="rowColor">
<td class="colFirst"><code>int</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#anzahl()">anzahl</a></span>()</code></th>
<td class="colLast">
<div class="block">Gibt die Mächtigkeit der Menge zurück</div>
</td>
</tr>
<tr id="i2" class="altColor">
<td class="colFirst"><code>Set</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#differenz(Set)">differenz</a></span>&#8203;(Set&nbsp;s)</code></th>
<td class="colLast">
<div class="block">Bestimmt die Differenzmenge der Menge selbst und der Menge s.</div>
</td>
</tr>
<tr id="i3" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#einfuegen(int)">einfuegen</a></span>&#8203;(int&nbsp;n)</code></th>
<td class="colLast">
<div class="block">Fügt einen neuen Wert in die Menge ein, falls er nicht bereits enthalten ist.</div>
</td>
</tr>
<tr id="i4" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#entfernen(int)">entfernen</a></span>&#8203;(int&nbsp;n)</code></th>
<td class="colLast">
<div class="block">Entfernt einen Wert aus der Menge, falls er enthalten ist.</div>
</td>
</tr>
<tr id="i5" class="rowColor">
<td class="colFirst"><code>boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#enthaelt(int)">enthaelt</a></span>&#8203;(int&nbsp;n)</code></th>
<td class="colLast">
<div class="block">Gibt zurück, ob ein bestimmter Wert in der Menge enthalten ist.</div>
</td>
</tr>
<tr id="i6" class="altColor">
<td class="colFirst"><code>boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#istLeer()">istLeer</a></span>()</code></th>
<td class="colLast">
<div class="block">Gibt zurück, ob die Menge kein Element enthält</div>
</td>
</tr>
<tr id="i7" class="rowColor">
<td class="colFirst"><code>Set</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#schnittmenge(Set)">schnittmenge</a></span>&#8203;(Set&nbsp;s)</code></th>
<td class="colLast">
<div class="block">Bestimmt die Schnittmenge der Menge selbst und der Menge s.</div>
</td>
</tr>
<tr id="i8" class="altColor">
<td class="colFirst"><code>boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#untermenge(Set)">untermenge</a></span>&#8203;(Set&nbsp;s)</code></th>
<td class="colLast">
<div class="block">Gibt zurück, ob diese Menge eine Untermenge der Menge s ist.</div>
</td>
</tr>
<tr id="i9" class="rowColor">
<td class="colFirst"><code>Set</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#vereinigungsmenge(Set)">vereinigungsmenge</a></span>&#8203;(Set&nbsp;s)</code></th>
<td class="colLast">
<div class="block">Bestimmt die Vereinigungsmenge der Menge selbst und der Menge s.</div>
</td>
</tr>
</table>
<ul class="blockList">
<li class="blockList"><a id="methods.inherited.from.class.Set">
<!-- -->
</a>
<h3>Methods inherited from class&nbsp;Set</h3>
<code>gleich, toString</code></li>
</ul>
<ul class="blockList">
<li class="blockList"><a id="methods.inherited.from.class.java.lang.Object">
<!-- -->
</a>
<h3>Methods inherited from class&nbsp;java.lang.Object</h3>
<code>clone, equals, getClass, hashCode, notify, notifyAll, wait, wait, wait</code></li>
</ul>
</li>
</ul>
</section>
</li>
</ul>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="constructor.detail">
<!-- -->
</a>
<h3>Constructor Detail</h3>
<a id="&lt;init&gt;()">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>SetVarianteA</h4>
<pre>public&nbsp;SetVarianteA()</pre>
<div class="block">Erzeugt eine neue leere Set</div>
</li>
</ul>
</li>
</ul>
</section>
<!-- ============ METHOD DETAIL ========== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="method.detail">
<!-- -->
</a>
<h3>Method Detail</h3>
<a id="alsArray()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>alsArray</h4>
<pre class="methodSignature">protected&nbsp;int[]&nbsp;alsArray()</pre>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code>alsArray</code>&nbsp;in class&nbsp;<code>Set</code></dd>
</dl>
</li>
</ul>
<a id="istLeer()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>istLeer</h4>
<pre class="methodSignature">public&nbsp;boolean&nbsp;istLeer()</pre>
<div class="block">Gibt zurück, ob die Menge kein Element enthält</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code>istLeer</code>&nbsp;in class&nbsp;<code>Set</code></dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>true, wenn die Menge leer ist; false sonst</dd>
</dl>
</li>
</ul>
<a id="anzahl()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>anzahl</h4>
<pre class="methodSignature">public&nbsp;int&nbsp;anzahl()</pre>
<div class="block">Gibt die Mächtigkeit der Menge zurück</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code>anzahl</code>&nbsp;in class&nbsp;<code>Set</code></dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>Die Anzahl der Elemente in der Menge</dd>
</dl>
</li>
</ul>
<a id="differenz(Set)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>differenz</h4>
<pre class="methodSignature">public&nbsp;Set&nbsp;differenz&#8203;(Set&nbsp;s)</pre>
<div class="block">Bestimmt die Differenzmenge der Menge selbst und der Menge s.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code>differenz</code>&nbsp;in class&nbsp;<code>Set</code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>s</code> - Die Menge, die von dieser Menge abgezogen werden soll.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>Eine neue Set, die alle Elemente dieser Menge enthält, die nicht in s enthalten sind.</dd>
</dl>
</li>
</ul>
<a id="untermenge(Set)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>untermenge</h4>
<pre class="methodSignature">public&nbsp;boolean&nbsp;untermenge&#8203;(Set&nbsp;s)</pre>
<div class="block">Gibt zurück, ob diese Menge eine Untermenge der Menge s ist.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code>untermenge</code>&nbsp;in class&nbsp;<code>Set</code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>s</code> - Die Menge, die geprüft werden soll.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>true, wenn jedes Element dieser Menge in s enthalten ist; false sonst</dd>
</dl>
</li>
</ul>
<a id="vereinigungsmenge(Set)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>vereinigungsmenge</h4>
<pre class="methodSignature">public&nbsp;Set&nbsp;vereinigungsmenge&#8203;(Set&nbsp;s)</pre>
<div class="block">Bestimmt die Vereinigungsmenge der Menge selbst und der Menge s.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code>vereinigungsmenge</code>&nbsp;in class&nbsp;<code>Set</code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>s</code> - Die Menge, mit der die Vereinigungsmenge bestimmt werden soll</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>Eine neue Set, die die Vereinigungsmenge der beiden Mengen repräsentiert.</dd>
</dl>
</li>
</ul>
<a id="einfuegen(int)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>einfuegen</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;einfuegen&#8203;(int&nbsp;n)</pre>
<div class="block">Fügt einen neuen Wert in die Menge ein, falls er nicht bereits enthalten ist.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code>einfuegen</code>&nbsp;in class&nbsp;<code>Set</code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>wert</code> - Der einzufügende Wert</dd>
</dl>
</li>
</ul>
<a id="schnittmenge(Set)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>schnittmenge</h4>
<pre class="methodSignature">public&nbsp;Set&nbsp;schnittmenge&#8203;(Set&nbsp;s)</pre>
<div class="block">Bestimmt die Schnittmenge der Menge selbst und der Menge s.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code>schnittmenge</code>&nbsp;in class&nbsp;<code>Set</code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>s</code> - Die Menge, mit der die Schnittmenge bestimmt werden soll</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>Eine neue Set, die die Schnittmenge der beiden Mengen repräsentiert.</dd>
</dl>
</li>
</ul>
<a id="enthaelt(int)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>enthaelt</h4>
<pre class="methodSignature">public&nbsp;boolean&nbsp;enthaelt&#8203;(int&nbsp;n)</pre>
<div class="block">Gibt zurück, ob ein bestimmter Wert in der Menge enthalten ist.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code>enthaelt</code>&nbsp;in class&nbsp;<code>Set</code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>wert</code> - Der zu suchende Wert</dd>
</dl>
</li>
</ul>
<a id="entfernen(int)">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>entfernen</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;entfernen&#8203;(int&nbsp;n)</pre>
<div class="block">Entfernt einen Wert aus der Menge, falls er enthalten ist.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code>entfernen</code>&nbsp;in class&nbsp;<code>Set</code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>wert</code> - Der zu entfernende Wert</dd>
</dl>
</li>
</ul>
</li>
</ul>
</section>
</li>
</ul>
</div>
</div>
</main>
<!-- ========= END OF CLASS DATA ========= -->
</body>
</html>

View file

@ -0,0 +1,401 @@
<!DOCTYPE HTML>
<!-- NewPage -->
<html lang="de">
<head>
<!-- Generated by javadoc (11.0.2) on Mon Jan 11 13:04:17 CET 2021 -->
<title>SetVarianteB</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="dc.created" content="2021-01-11">
<link rel="stylesheet" type="text/css" href="stylesheet.css" title="Style">
<script type="text/javascript" src="script.js"></script>
</head>
<body>
<script type="text/javascript"><!--
try {
if (location.href.indexOf('is-external=true') == -1) {
parent.document.title="SetVarianteB";
}
}
catch(err) {
}
//-->
var data = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10,"i7":10,"i8":10,"i9":10};
var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
var altColor = "altColor";
var rowColor = "rowColor";
var tableTab = "tableTab";
var activeTableTab = "activeTableTab";
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<!-- ======== START OF CLASS DATA ======== -->
<main role="main">
<div class="header">
<h2 title="Class SetVarianteB" class="title">Class SetVarianteB</h2>
</div>
<div class="contentContainer">
<ul class="inheritance">
<li>java.lang.Object</li>
<li>
<ul class="inheritance">
<li>Set</li>
<li>
<ul class="inheritance">
<li>SetVarianteB</li>
</ul>
</li>
</ul>
</li>
</ul>
<div class="description">
<ul class="blockList">
<li class="blockList">
<hr>
<pre>public class <span class="typeNameLabel">SetVarianteB</span>
extends Set</pre>
<div class="block">Set-Variante B</div>
<dl>
<dt><span class="simpleTagLabel">Version:</span></dt>
<dd>26.9.2020</dd>
<dt><span class="simpleTagLabel">Author:</span></dt>
<dd>Rainer Helfrich</dd>
</dl>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="constructor.summary">
<!-- -->
</a>
<h3>Constructor Summary</h3>
<table class="memberSummary">
<caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Constructor</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tr class="altColor">
<th class="colConstructorName" scope="row"><code><span class="memberNameLink"><a href="#%3Cinit%3E()">SetVarianteB</a></span>()</code></th>
<td class="colLast">
<div class="block">Erzeugt eine neue leere Set</div>
</td>
</tr>
</table>
</li>
</ul>
</section>
<!-- ========== METHOD SUMMARY =========== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="method.summary">
<!-- -->
</a>
<h3>Method Summary</h3>
<table class="memberSummary">
<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colSecond" scope="col">Method</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tr id="i0" class="altColor">
<td class="colFirst"><code>protected int[]</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#alsArray()">alsArray</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i1" class="rowColor">
<td class="colFirst"><code>int</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#anzahl()">anzahl</a></span>()</code></th>
<td class="colLast">
<div class="block">Gibt die Mächtigkeit der Menge zurück</div>
</td>
</tr>
<tr id="i2" class="altColor">
<td class="colFirst"><code>Set</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#differenz(Set)">differenz</a></span>&#8203;(Set&nbsp;s)</code></th>
<td class="colLast">
<div class="block">Bestimmt die Differenzmenge der Menge selbst und der Menge s.</div>
</td>
</tr>
<tr id="i3" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#einfuegen(int)">einfuegen</a></span>&#8203;(int&nbsp;wert)</code></th>
<td class="colLast">
<div class="block">Fügt einen neuen Wert in die Menge ein, falls er nicht bereits enthalten ist.</div>
</td>
</tr>
<tr id="i4" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#entfernen(int)">entfernen</a></span>&#8203;(int&nbsp;wert)</code></th>
<td class="colLast">
<div class="block">Entfernt einen Wert aus der Menge, falls er enthalten ist.</div>
</td>
</tr>
<tr id="i5" class="rowColor">
<td class="colFirst"><code>boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#enthaelt(int)">enthaelt</a></span>&#8203;(int&nbsp;x)</code></th>
<td class="colLast">
<div class="block">Gibt zurück, ob ein bestimmter Wert in der Menge enthalten ist.</div>
</td>
</tr>
<tr id="i6" class="altColor">
<td class="colFirst"><code>boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#istLeer()">istLeer</a></span>()</code></th>
<td class="colLast">
<div class="block">Gibt zurück, ob die Menge kein Element enthält</div>
</td>
</tr>
<tr id="i7" class="rowColor">
<td class="colFirst"><code>Set</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#schnittmenge(Set)">schnittmenge</a></span>&#8203;(Set&nbsp;s)</code></th>
<td class="colLast">
<div class="block">Bestimmt die Schnittmenge der Menge selbst und der Menge s.</div>
</td>
</tr>
<tr id="i8" class="altColor">
<td class="colFirst"><code>boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#untermenge(Set)">untermenge</a></span>&#8203;(Set&nbsp;s)</code></th>
<td class="colLast">
<div class="block">Gibt zurück, ob diese Menge eine Untermenge der Menge s ist.</div>
</td>
</tr>
<tr id="i9" class="rowColor">
<td class="colFirst"><code>Set</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#vereinigungsmenge(Set)">vereinigungsmenge</a></span>&#8203;(Set&nbsp;s)</code></th>
<td class="colLast">
<div class="block">Bestimmt die Vereinigungsmenge der Menge selbst und der Menge s.</div>
</td>
</tr>
</table>
<ul class="blockList">
<li class="blockList"><a id="methods.inherited.from.class.Set">
<!-- -->
</a>
<h3>Methods inherited from class&nbsp;Set</h3>
<code>gleich, toString</code></li>
</ul>
<ul class="blockList">
<li class="blockList"><a id="methods.inherited.from.class.java.lang.Object">
<!-- -->
</a>
<h3>Methods inherited from class&nbsp;java.lang.Object</h3>
<code>clone, equals, getClass, hashCode, notify, notifyAll, wait, wait, wait</code></li>
</ul>
</li>
</ul>
</section>
</li>
</ul>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="constructor.detail">
<!-- -->
</a>
<h3>Constructor Detail</h3>
<a id="&lt;init&gt;()">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>SetVarianteB</h4>
<pre>public&nbsp;SetVarianteB()</pre>
<div class="block">Erzeugt eine neue leere Set</div>
</li>
</ul>
</li>
</ul>
</section>
<!-- ============ METHOD DETAIL ========== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="method.detail">
<!-- -->
</a>
<h3>Method Detail</h3>
<a id="istLeer()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>istLeer</h4>
<pre class="methodSignature">public&nbsp;boolean&nbsp;istLeer()</pre>
<div class="block">Gibt zurück, ob die Menge kein Element enthält</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code>istLeer</code>&nbsp;in class&nbsp;<code>Set</code></dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>true, wenn die Menge leer ist; false sonst</dd>
</dl>
</li>
</ul>
<a id="anzahl()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>anzahl</h4>
<pre class="methodSignature">public&nbsp;int&nbsp;anzahl()</pre>
<div class="block">Gibt die Mächtigkeit der Menge zurück</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code>anzahl</code>&nbsp;in class&nbsp;<code>Set</code></dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>Die Anzahl der Elemente in der Menge</dd>
</dl>
</li>
</ul>
<a id="differenz(Set)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>differenz</h4>
<pre class="methodSignature">public&nbsp;Set&nbsp;differenz&#8203;(Set&nbsp;s)</pre>
<div class="block">Bestimmt die Differenzmenge der Menge selbst und der Menge s.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code>differenz</code>&nbsp;in class&nbsp;<code>Set</code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>s</code> - Die Menge, die von dieser Menge abgezogen werden soll.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>Eine neue Set, die alle Elemente dieser Menge enthält, die nicht in s enthalten sind.</dd>
</dl>
</li>
</ul>
<a id="untermenge(Set)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>untermenge</h4>
<pre class="methodSignature">public&nbsp;boolean&nbsp;untermenge&#8203;(Set&nbsp;s)</pre>
<div class="block">Gibt zurück, ob diese Menge eine Untermenge der Menge s ist.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code>untermenge</code>&nbsp;in class&nbsp;<code>Set</code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>s</code> - Die Menge, die geprüft werden soll.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>true, wenn jedes Element dieser Menge in s enthalten ist; false sonst</dd>
</dl>
</li>
</ul>
<a id="vereinigungsmenge(Set)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>vereinigungsmenge</h4>
<pre class="methodSignature">public&nbsp;Set&nbsp;vereinigungsmenge&#8203;(Set&nbsp;s)</pre>
<div class="block">Bestimmt die Vereinigungsmenge der Menge selbst und der Menge s.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code>vereinigungsmenge</code>&nbsp;in class&nbsp;<code>Set</code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>s</code> - Die Menge, mit der die Vereinigungsmenge bestimmt werden soll</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>Eine neue Set, die die Vereinigungsmenge der beiden Mengen repräsentiert.</dd>
</dl>
</li>
</ul>
<a id="alsArray()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>alsArray</h4>
<pre class="methodSignature">protected&nbsp;int[]&nbsp;alsArray()</pre>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code>alsArray</code>&nbsp;in class&nbsp;<code>Set</code></dd>
</dl>
</li>
</ul>
<a id="schnittmenge(Set)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>schnittmenge</h4>
<pre class="methodSignature">public&nbsp;Set&nbsp;schnittmenge&#8203;(Set&nbsp;s)</pre>
<div class="block">Bestimmt die Schnittmenge der Menge selbst und der Menge s.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code>schnittmenge</code>&nbsp;in class&nbsp;<code>Set</code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>s</code> - Die Menge, mit der die Schnittmenge bestimmt werden soll</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>Eine neue Set, die die Schnittmenge der beiden Mengen repräsentiert.</dd>
</dl>
</li>
</ul>
<a id="enthaelt(int)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>enthaelt</h4>
<pre class="methodSignature">public&nbsp;boolean&nbsp;enthaelt&#8203;(int&nbsp;x)</pre>
<div class="block">Gibt zurück, ob ein bestimmter Wert in der Menge enthalten ist.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code>enthaelt</code>&nbsp;in class&nbsp;<code>Set</code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>wert</code> - Der zu suchende Wert</dd>
</dl>
</li>
</ul>
<a id="entfernen(int)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>entfernen</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;entfernen&#8203;(int&nbsp;wert)</pre>
<div class="block">Entfernt einen Wert aus der Menge, falls er enthalten ist.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code>entfernen</code>&nbsp;in class&nbsp;<code>Set</code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>wert</code> - Der zu entfernende Wert</dd>
</dl>
</li>
</ul>
<a id="einfuegen(int)">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>einfuegen</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;einfuegen&#8203;(int&nbsp;wert)</pre>
<div class="block">Fügt einen neuen Wert in die Menge ein, falls er nicht bereits enthalten ist.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code>einfuegen</code>&nbsp;in class&nbsp;<code>Set</code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>wert</code> - Der einzufügende Wert</dd>
</dl>
</li>
</ul>
</li>
</ul>
</section>
</li>
</ul>
</div>
</div>
</main>
<!-- ========= END OF CLASS DATA ========= -->
</body>
</html>

View file

@ -0,0 +1,426 @@
<!DOCTYPE HTML>
<!-- NewPage -->
<html lang="de">
<head>
<!-- Generated by javadoc (11.0.2) on Mon Jan 11 13:04:17 CET 2021 -->
<title>SetVarianteC</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="dc.created" content="2021-01-11">
<link rel="stylesheet" type="text/css" href="stylesheet.css" title="Style">
<script type="text/javascript" src="script.js"></script>
</head>
<body>
<script type="text/javascript"><!--
try {
if (location.href.indexOf('is-external=true') == -1) {
parent.document.title="SetVarianteC";
}
}
catch(err) {
}
//-->
var data = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10,"i7":10,"i8":10,"i9":10,"i10":10};
var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
var altColor = "altColor";
var rowColor = "rowColor";
var tableTab = "tableTab";
var activeTableTab = "activeTableTab";
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<!-- ======== START OF CLASS DATA ======== -->
<main role="main">
<div class="header">
<h2 title="Class SetVarianteC" class="title">Class SetVarianteC</h2>
</div>
<div class="contentContainer">
<ul class="inheritance">
<li>java.lang.Object</li>
<li>
<ul class="inheritance">
<li>Set</li>
<li>
<ul class="inheritance">
<li>SetVarianteC</li>
</ul>
</li>
</ul>
</li>
</ul>
<div class="description">
<ul class="blockList">
<li class="blockList">
<hr>
<pre>public class <span class="typeNameLabel">SetVarianteC</span>
extends Set</pre>
<div class="block">Set-Variante C</div>
<dl>
<dt><span class="simpleTagLabel">Version:</span></dt>
<dd>26.9.2020</dd>
<dt><span class="simpleTagLabel">Author:</span></dt>
<dd>Rainer Helfrich</dd>
</dl>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="constructor.summary">
<!-- -->
</a>
<h3>Constructor Summary</h3>
<table class="memberSummary">
<caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Constructor</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tr class="altColor">
<th class="colConstructorName" scope="row"><code><span class="memberNameLink"><a href="#%3Cinit%3E()">SetVarianteC</a></span>()</code></th>
<td class="colLast">
<div class="block">Erzeugt eine neue leere Set</div>
</td>
</tr>
</table>
</li>
</ul>
</section>
<!-- ========== METHOD SUMMARY =========== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="method.summary">
<!-- -->
</a>
<h3>Method Summary</h3>
<table class="memberSummary">
<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colSecond" scope="col">Method</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tr id="i0" class="altColor">
<td class="colFirst"><code>protected int[]</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#alsArray()">alsArray</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i1" class="rowColor">
<td class="colFirst"><code>int</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#anzahl()">anzahl</a></span>()</code></th>
<td class="colLast">
<div class="block">Gibt die Mächtigkeit der Menge zurück</div>
</td>
</tr>
<tr id="i2" class="altColor">
<td class="colFirst"><code>Set</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#differenz(Set)">differenz</a></span>&#8203;(Set&nbsp;s)</code></th>
<td class="colLast">
<div class="block">Bestimmt die Differenzmenge der Menge selbst und der Menge s.</div>
</td>
</tr>
<tr id="i3" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#einfuegen(int)">einfuegen</a></span>&#8203;(int&nbsp;x)</code></th>
<td class="colLast">
<div class="block">Fügt einen neuen Wert in die Menge ein, falls er nicht bereits enthalten ist.</div>
</td>
</tr>
<tr id="i4" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#entfernen(int)">entfernen</a></span>&#8203;(int&nbsp;x)</code></th>
<td class="colLast">
<div class="block">Entfernt einen Wert aus der Menge, falls er enthalten ist.</div>
</td>
</tr>
<tr id="i5" class="rowColor">
<td class="colFirst"><code>boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#enthaelt(int)">enthaelt</a></span>&#8203;(int&nbsp;x)</code></th>
<td class="colLast">
<div class="block">Gibt zurück, ob ein bestimmter Wert in der Menge enthalten ist.</div>
</td>
</tr>
<tr id="i6" class="altColor">
<td class="colFirst"><code>boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#gleich(Set)">gleich</a></span>&#8203;(Set&nbsp;s)</code></th>
<td class="colLast">
<div class="block">Gibt zurück, ob diese Menge und s die gleichen Elemente enthalten</div>
</td>
</tr>
<tr id="i7" class="rowColor">
<td class="colFirst"><code>boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#istLeer()">istLeer</a></span>()</code></th>
<td class="colLast">
<div class="block">Gibt zurück, ob die Menge kein Element enthält</div>
</td>
</tr>
<tr id="i8" class="altColor">
<td class="colFirst"><code>Set</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#schnittmenge(Set)">schnittmenge</a></span>&#8203;(Set&nbsp;s)</code></th>
<td class="colLast">
<div class="block">Bestimmt die Schnittmenge der Menge selbst und der Menge s.</div>
</td>
</tr>
<tr id="i9" class="rowColor">
<td class="colFirst"><code>boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#untermenge(Set)">untermenge</a></span>&#8203;(Set&nbsp;s)</code></th>
<td class="colLast">
<div class="block">Gibt zurück, ob diese Menge eine Untermenge der Menge s ist.</div>
</td>
</tr>
<tr id="i10" class="altColor">
<td class="colFirst"><code>Set</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#vereinigungsmenge(Set)">vereinigungsmenge</a></span>&#8203;(Set&nbsp;s)</code></th>
<td class="colLast">
<div class="block">Bestimmt die Vereinigungsmenge der Menge selbst und der Menge s.</div>
</td>
</tr>
</table>
<ul class="blockList">
<li class="blockList"><a id="methods.inherited.from.class.Set">
<!-- -->
</a>
<h3>Methods inherited from class&nbsp;Set</h3>
<code>toString</code></li>
</ul>
<ul class="blockList">
<li class="blockList"><a id="methods.inherited.from.class.java.lang.Object">
<!-- -->
</a>
<h3>Methods inherited from class&nbsp;java.lang.Object</h3>
<code>clone, equals, getClass, hashCode, notify, notifyAll, wait, wait, wait</code></li>
</ul>
</li>
</ul>
</section>
</li>
</ul>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="constructor.detail">
<!-- -->
</a>
<h3>Constructor Detail</h3>
<a id="&lt;init&gt;()">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>SetVarianteC</h4>
<pre>public&nbsp;SetVarianteC()</pre>
<div class="block">Erzeugt eine neue leere Set</div>
</li>
</ul>
</li>
</ul>
</section>
<!-- ============ METHOD DETAIL ========== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="method.detail">
<!-- -->
</a>
<h3>Method Detail</h3>
<a id="alsArray()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>alsArray</h4>
<pre class="methodSignature">protected&nbsp;int[]&nbsp;alsArray()</pre>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code>alsArray</code>&nbsp;in class&nbsp;<code>Set</code></dd>
</dl>
</li>
</ul>
<a id="istLeer()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>istLeer</h4>
<pre class="methodSignature">public&nbsp;boolean&nbsp;istLeer()</pre>
<div class="block">Gibt zurück, ob die Menge kein Element enthält</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code>istLeer</code>&nbsp;in class&nbsp;<code>Set</code></dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>true, wenn die Menge leer ist; false sonst</dd>
</dl>
</li>
</ul>
<a id="enthaelt(int)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>enthaelt</h4>
<pre class="methodSignature">public&nbsp;boolean&nbsp;enthaelt&#8203;(int&nbsp;x)</pre>
<div class="block">Gibt zurück, ob ein bestimmter Wert in der Menge enthalten ist.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code>enthaelt</code>&nbsp;in class&nbsp;<code>Set</code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>wert</code> - Der zu suchende Wert</dd>
</dl>
</li>
</ul>
<a id="anzahl()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>anzahl</h4>
<pre class="methodSignature">public&nbsp;int&nbsp;anzahl()</pre>
<div class="block">Gibt die Mächtigkeit der Menge zurück</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code>anzahl</code>&nbsp;in class&nbsp;<code>Set</code></dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>Die Anzahl der Elemente in der Menge</dd>
</dl>
</li>
</ul>
<a id="differenz(Set)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>differenz</h4>
<pre class="methodSignature">public&nbsp;Set&nbsp;differenz&#8203;(Set&nbsp;s)</pre>
<div class="block">Bestimmt die Differenzmenge der Menge selbst und der Menge s.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code>differenz</code>&nbsp;in class&nbsp;<code>Set</code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>s</code> - Die Menge, die von dieser Menge abgezogen werden soll.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>Eine neue Set, die alle Elemente dieser Menge enthält, die nicht in s enthalten sind.</dd>
</dl>
</li>
</ul>
<a id="einfuegen(int)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>einfuegen</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;einfuegen&#8203;(int&nbsp;x)</pre>
<div class="block">Fügt einen neuen Wert in die Menge ein, falls er nicht bereits enthalten ist.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code>einfuegen</code>&nbsp;in class&nbsp;<code>Set</code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>wert</code> - Der einzufügende Wert</dd>
</dl>
</li>
</ul>
<a id="untermenge(Set)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>untermenge</h4>
<pre class="methodSignature">public&nbsp;boolean&nbsp;untermenge&#8203;(Set&nbsp;s)</pre>
<div class="block">Gibt zurück, ob diese Menge eine Untermenge der Menge s ist.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code>untermenge</code>&nbsp;in class&nbsp;<code>Set</code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>s</code> - Die Menge, die geprüft werden soll.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>true, wenn jedes Element dieser Menge in s enthalten ist; false sonst</dd>
</dl>
</li>
</ul>
<a id="vereinigungsmenge(Set)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>vereinigungsmenge</h4>
<pre class="methodSignature">public&nbsp;Set&nbsp;vereinigungsmenge&#8203;(Set&nbsp;s)</pre>
<div class="block">Bestimmt die Vereinigungsmenge der Menge selbst und der Menge s.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code>vereinigungsmenge</code>&nbsp;in class&nbsp;<code>Set</code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>s</code> - Die Menge, mit der die Vereinigungsmenge bestimmt werden soll</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>Eine neue Set, die die Vereinigungsmenge der beiden Mengen repräsentiert.</dd>
</dl>
</li>
</ul>
<a id="schnittmenge(Set)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>schnittmenge</h4>
<pre class="methodSignature">public&nbsp;Set&nbsp;schnittmenge&#8203;(Set&nbsp;s)</pre>
<div class="block">Bestimmt die Schnittmenge der Menge selbst und der Menge s.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code>schnittmenge</code>&nbsp;in class&nbsp;<code>Set</code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>s</code> - Die Menge, mit der die Schnittmenge bestimmt werden soll</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>Eine neue Set, die die Schnittmenge der beiden Mengen repräsentiert.</dd>
</dl>
</li>
</ul>
<a id="entfernen(int)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>entfernen</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;entfernen&#8203;(int&nbsp;x)</pre>
<div class="block">Entfernt einen Wert aus der Menge, falls er enthalten ist.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code>entfernen</code>&nbsp;in class&nbsp;<code>Set</code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>wert</code> - Der zu entfernende Wert</dd>
</dl>
</li>
</ul>
<a id="gleich(Set)">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>gleich</h4>
<pre class="methodSignature">public&nbsp;boolean&nbsp;gleich&#8203;(Set&nbsp;s)</pre>
<div class="block">Gibt zurück, ob diese Menge und s die gleichen Elemente enthalten</div>
<dl>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code>gleich</code>&nbsp;in class&nbsp;<code>Set</code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>s</code> - Die zu überprüfende Menge</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>true, wenn beide Mengen die gleichen Elemente enthalten; false sonst</dd>
</dl>
</li>
</ul>
</li>
</ul>
</section>
</li>
</ul>
</div>
</div>
</main>
<!-- ========= END OF CLASS DATA ========= -->
</body>
</html>

View file

@ -0,0 +1,20 @@
<!DOCTYPE HTML>
<!-- NewPage -->
<html lang="de">
<head>
<!-- Generated by javadoc (11.0.2) on Mon Jan 11 13:04:17 CET 2021 -->
<title>All Classes</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="dc.created" content="2021-01-11">
<link rel="stylesheet" type="text/css" href="stylesheet.css" title="Style">
<script type="text/javascript" src="script.js"></script>
</head>
<body>
<h1 class="bar">All&nbsp;Classes</h1>
<main role="main" class="indexContainer">
<ul>
<li><a href="SetVarianteC.html" title="class in &lt;Unnamed&gt;">SetVarianteC</a></li>
</ul>
</main>
</body>
</html>

View file

@ -0,0 +1,35 @@
<!DOCTYPE HTML>
<!-- NewPage -->
<html lang="de">
<head>
<!-- Generated by javadoc (11.0.2) on Mon Jan 11 13:04:17 CET 2021 -->
<title>Constant Field Values</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="dc.created" content="2021-01-11">
<link rel="stylesheet" type="text/css" href="stylesheet.css" title="Style">
<script type="text/javascript" src="script.js"></script>
</head>
<body>
<script type="text/javascript"><!--
try {
if (location.href.indexOf('is-external=true') == -1) {
parent.document.title="Constant Field Values";
}
}
catch(err) {
}
//-->
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<main role="main">
<div class="header">
<h1 title="Constant Field Values" class="title">Constant Field Values</h1>
<section role="region">
<h2 title="Contents">Contents</h2>
</section>
</div>
</main>
</body>
</html>

View file

@ -0,0 +1 @@
unnamed package

View file

@ -0,0 +1,23 @@
<!DOCTYPE HTML>
<!-- NewPage -->
<html lang="de">
<head>
<!-- Generated by javadoc (11.0.2) on Mon Jan 11 13:04:17 CET 2021 -->
<title>Generated Documentation (Untitled)</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<script type="text/javascript">window.location.replace('SetVarianteC.html')</script>
<noscript>
<meta http-equiv="Refresh" content="0;SetVarianteC.html">
</noscript>
<link rel="canonical" href="SetVarianteC.html">
<link rel="stylesheet" type="text/css" href="stylesheet.css" title="Style">
</head>
<body>
<main role="main">
<noscript>
<p>JavaScript is disabled on your browser.</p>
</noscript>
<p><a href="SetVarianteC.html">SetVarianteC.html</a></p>
</main>
</body>
</html>

View file

@ -0,0 +1,40 @@
Class documentation
<---- javadoc command: ---->
D:\Program Files\BlueJ\jdk\bin\javadoc.exe
-author
-version
-nodeprecated
-package
-Xdoclint:none
-noindex
-notree
-nohelp
-nonavbar
-source
11
-classpath
D:\Program Files\BlueJ\lib\bluejcore.jar;D:\Program Files\BlueJ\lib\junit-4.11.jar;D:\Program Files\BlueJ\lib\hamcrest-core-1.3.jar;D:\Program Files\BlueJ\lib\lang-stride.jar;D:\Program Files\BlueJ\lib\javafx\lib\javafx.base.jar;D:\Program Files\BlueJ\lib\javafx\lib\javafx.controls.jar;D:\Program Files\BlueJ\lib\javafx\lib\javafx.fxml.jar;D:\Program Files\BlueJ\lib\javafx\lib\javafx.graphics.jar;D:\Program Files\BlueJ\lib\javafx\lib\javafx.media.jar;D:\Program Files\BlueJ\lib\javafx\lib\javafx.properties.jar;D:\Program Files\BlueJ\lib\javafx\lib\javafx.swing.jar;D:\Program Files\BlueJ\lib\javafx\lib\javafx.web.jar;D:\Users\LeRainieur\Documents\Schule\Fortbildungen\Weiterentwicklung der Informatik ab 2015\Eigener Ablauf\Regionaltag 9+10\Turtle - Lösung\aplu5.jar;D:\Users\LeRainieur\Documents\Schule\Fortbildungen\ZPG Oberstufe\ADTs\Ergebnis\3_vorlagen_tauschordner\04_set (mit Sourcecode)\+libs\SizeOf.jar;D:\Users\LeRainieur\Documents\Schule\Fortbildungen\ZPG Oberstufe\ADTs\Ergebnis\3_vorlagen_tauschordner\04_set (mit Sourcecode)
-d
D:\Users\LeRainieur\Documents\Schule\Fortbildungen\ZPG Oberstufe\ADTs\Ergebnis\3_vorlagen_tauschordner\04_set (mit Sourcecode)\doc
-encoding
UTF-8
-charset
UTF-8
D:\Users\LeRainieur\Documents\Schule\Fortbildungen\ZPG Oberstufe\ADTs\Ergebnis\3_vorlagen_tauschordner\04_set (mit Sourcecode)\SetVarianteC.java
<---- end of javadoc command ---->
Loading source file D:\Users\LeRainieur\Documents\Schule\Fortbildungen\ZPG Oberstufe\ADTs\Ergebnis\3_vorlagen_tauschordner\04_set (mit Sourcecode)\SetVarianteC.java...
Constructing Javadoc information...
Standard Doclet version 11.0.2
Building tree for all the packages and classes...
Generating D:\Users\LeRainieur\Documents\Schule\Fortbildungen\ZPG Oberstufe\ADTs\Ergebnis\3_vorlagen_tauschordner\04_set (mit Sourcecode)\doc\SetVarianteC.html...
D:\Users\LeRainieur\Documents\Schule\Fortbildungen\ZPG Oberstufe\ADTs\Ergebnis\3_vorlagen_tauschordner\04_set (mit Sourcecode)\SetVarianteC.java:54: warning - @param argument "wert" is not a parameter name.
D:\Users\LeRainieur\Documents\Schule\Fortbildungen\ZPG Oberstufe\ADTs\Ergebnis\3_vorlagen_tauschordner\04_set (mit Sourcecode)\SetVarianteC.java:117: warning - @param argument "wert" is not a parameter name.
D:\Users\LeRainieur\Documents\Schule\Fortbildungen\ZPG Oberstufe\ADTs\Ergebnis\3_vorlagen_tauschordner\04_set (mit Sourcecode)\SetVarianteC.java:243: warning - @param argument "wert" is not a parameter name.
Generating D:\Users\LeRainieur\Documents\Schule\Fortbildungen\ZPG Oberstufe\ADTs\Ergebnis\3_vorlagen_tauschordner\04_set (mit Sourcecode)\doc\package-summary.html...
Generating D:\Users\LeRainieur\Documents\Schule\Fortbildungen\ZPG Oberstufe\ADTs\Ergebnis\3_vorlagen_tauschordner\04_set (mit Sourcecode)\doc\constant-values.html...
Building index for all the packages and classes...
Building index for all classes...
Generating D:\Users\LeRainieur\Documents\Schule\Fortbildungen\ZPG Oberstufe\ADTs\Ergebnis\3_vorlagen_tauschordner\04_set (mit Sourcecode)\doc\allclasses.html...
Generating D:\Users\LeRainieur\Documents\Schule\Fortbildungen\ZPG Oberstufe\ADTs\Ergebnis\3_vorlagen_tauschordner\04_set (mit Sourcecode)\doc\allclasses.html...
Generating D:\Users\LeRainieur\Documents\Schule\Fortbildungen\ZPG Oberstufe\ADTs\Ergebnis\3_vorlagen_tauschordner\04_set (mit Sourcecode)\doc\index.html...
3 warnings

View file

@ -0,0 +1,53 @@
<!DOCTYPE HTML>
<!-- NewPage -->
<html lang="de">
<head>
<!-- Generated by javadoc (11.0.2) on Mon Jan 11 13:04:17 CET 2021 -->
<title>&lt;Unnamed&gt;</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="dc.created" content="2021-01-11">
<link rel="stylesheet" type="text/css" href="stylesheet.css" title="Style">
<script type="text/javascript" src="script.js"></script>
</head>
<body>
<script type="text/javascript"><!--
try {
if (location.href.indexOf('is-external=true') == -1) {
parent.document.title="<Unnamed>";
}
}
catch(err) {
}
//-->
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<main role="main">
<div class="header">
<h1 title="Package" class="title">Package&nbsp;&lt;Unnamed&gt;</h1>
</div>
<div class="contentContainer">
<ul class="blockList">
<li class="blockList">
<table class="typeSummary">
<caption><span>Class Summary</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Class</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tbody>
<tr class="altColor">
<th class="colFirst" scope="row"><a href="SetVarianteC.html" title="class in &lt;Unnamed&gt;">SetVarianteC</a></th>
<td class="colLast">
<div class="block">Set-Variante C</div>
</td>
</tr>
</tbody>
</table>
</li>
</ul>
</div>
</main>
</body>
</html>

View file

@ -0,0 +1,139 @@
/*
* Copyright (c) 2013, 2018, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Oracle designates this
* particular file as subject to the "Classpath" exception as provided
* by Oracle in the LICENSE file that accompanied this code.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
var moduleSearchIndex;
var packageSearchIndex;
var typeSearchIndex;
var memberSearchIndex;
var tagSearchIndex;
function loadScripts(doc, tag) {
createElem(doc, tag, 'jquery/jszip/dist/jszip.js');
createElem(doc, tag, 'jquery/jszip-utils/dist/jszip-utils.js');
if (window.navigator.userAgent.indexOf('MSIE ') > 0 || window.navigator.userAgent.indexOf('Trident/') > 0 ||
window.navigator.userAgent.indexOf('Edge/') > 0) {
createElem(doc, tag, 'jquery/jszip-utils/dist/jszip-utils-ie.js');
}
createElem(doc, tag, 'search.js');
$.get(pathtoroot + "module-search-index.zip")
.done(function() {
JSZipUtils.getBinaryContent(pathtoroot + "module-search-index.zip", function(e, data) {
var zip = new JSZip(data);
zip.load(data);
moduleSearchIndex = JSON.parse(zip.file("module-search-index.json").asText());
});
});
$.get(pathtoroot + "package-search-index.zip")
.done(function() {
JSZipUtils.getBinaryContent(pathtoroot + "package-search-index.zip", function(e, data) {
var zip = new JSZip(data);
zip.load(data);
packageSearchIndex = JSON.parse(zip.file("package-search-index.json").asText());
});
});
$.get(pathtoroot + "type-search-index.zip")
.done(function() {
JSZipUtils.getBinaryContent(pathtoroot + "type-search-index.zip", function(e, data) {
var zip = new JSZip(data);
zip.load(data);
typeSearchIndex = JSON.parse(zip.file("type-search-index.json").asText());
});
});
$.get(pathtoroot + "member-search-index.zip")
.done(function() {
JSZipUtils.getBinaryContent(pathtoroot + "member-search-index.zip", function(e, data) {
var zip = new JSZip(data);
zip.load(data);
memberSearchIndex = JSON.parse(zip.file("member-search-index.json").asText());
});
});
$.get(pathtoroot + "tag-search-index.zip")
.done(function() {
JSZipUtils.getBinaryContent(pathtoroot + "tag-search-index.zip", function(e, data) {
var zip = new JSZip(data);
zip.load(data);
tagSearchIndex = JSON.parse(zip.file("tag-search-index.json").asText());
});
});
if (!moduleSearchIndex) {
createElem(doc, tag, 'module-search-index.js');
}
if (!packageSearchIndex) {
createElem(doc, tag, 'package-search-index.js');
}
if (!typeSearchIndex) {
createElem(doc, tag, 'type-search-index.js');
}
if (!memberSearchIndex) {
createElem(doc, tag, 'member-search-index.js');
}
if (!tagSearchIndex) {
createElem(doc, tag, 'tag-search-index.js');
}
$(window).resize(function() {
$('.navPadding').css('padding-top', $('.fixedNav').css("height"));
});
}
function createElem(doc, tag, path) {
var script = doc.createElement(tag);
var scriptElement = doc.getElementsByTagName(tag)[0];
script.src = pathtoroot + path;
scriptElement.parentNode.insertBefore(script, scriptElement);
}
function show(type) {
count = 0;
for (var key in data) {
var row = document.getElementById(key);
if ((data[key] & type) !== 0) {
row.style.display = '';
row.className = (count++ % 2) ? rowColor : altColor;
}
else
row.style.display = 'none';
}
updateTabs(type);
}
function updateTabs(type) {
for (var value in tabs) {
var sNode = document.getElementById(tabs[value][0]);
var spanNode = sNode.firstChild;
if (value == type) {
sNode.className = activeTableTab;
spanNode.innerHTML = tabs[value][1];
}
else {
sNode.className = tableTab;
spanNode.innerHTML = "<a href=\"javascript:show("+ value + ");\">" + tabs[value][1] + "</a>";
}
}
}
function updateModuleFrame(pFrame, cFrame) {
top.packageFrame.location = pFrame;
top.classFrame.location = cFrame;
}

View file

@ -0,0 +1,906 @@
/*
* Javadoc style sheet
*/
@import url('resources/fonts/dejavu.css');
/*
* Styles for individual HTML elements.
*
* These are styles that are specific to individual HTML elements. Changing them affects the style of a particular
* HTML element throughout the page.
*/
body {
background-color:#ffffff;
color:#353833;
font-family:'DejaVu Sans', Arial, Helvetica, sans-serif;
font-size:14px;
margin:0;
padding:0;
height:100%;
width:100%;
}
iframe {
margin:0;
padding:0;
height:100%;
width:100%;
overflow-y:scroll;
border:none;
}
a:link, a:visited {
text-decoration:none;
color:#4A6782;
}
a[href]:hover, a[href]:focus {
text-decoration:none;
color:#bb7a2a;
}
a[name] {
color:#353833;
}
a[name]:before, a[name]:target, a[id]:before, a[id]:target {
content:"";
display:inline-block;
position:relative;
padding-top:129px;
margin-top:-129px;
}
pre {
font-family:'DejaVu Sans Mono', monospace;
font-size:14px;
}
h1 {
font-size:20px;
}
h2 {
font-size:18px;
}
h3 {
font-size:16px;
font-style:italic;
}
h4 {
font-size:13px;
}
h5 {
font-size:12px;
}
h6 {
font-size:11px;
}
ul {
list-style-type:disc;
}
code, tt {
font-family:'DejaVu Sans Mono', monospace;
font-size:14px;
padding-top:4px;
margin-top:8px;
line-height:1.4em;
}
dt code {
font-family:'DejaVu Sans Mono', monospace;
font-size:14px;
padding-top:4px;
}
table tr td dt code {
font-family:'DejaVu Sans Mono', monospace;
font-size:14px;
vertical-align:top;
padding-top:4px;
}
sup {
font-size:8px;
}
/*
* Styles for HTML generated by javadoc.
*
* These are style classes that are used by the standard doclet to generate HTML documentation.
*/
/*
* Styles for document title and copyright.
*/
.clear {
clear:both;
height:0px;
overflow:hidden;
}
.aboutLanguage {
float:right;
padding:0px 21px;
font-size:11px;
z-index:200;
margin-top:-9px;
}
.legalCopy {
margin-left:.5em;
}
.bar a, .bar a:link, .bar a:visited, .bar a:active {
color:#FFFFFF;
text-decoration:none;
}
.bar a:hover, .bar a:focus {
color:#bb7a2a;
}
.tab {
background-color:#0066FF;
color:#ffffff;
padding:8px;
width:5em;
font-weight:bold;
}
/*
* Styles for navigation bar.
*/
.bar {
background-color:#4D7A97;
color:#FFFFFF;
padding:.8em .5em .4em .8em;
height:auto;/*height:1.8em;*/
font-size:11px;
margin:0;
}
.navPadding {
padding-top: 107px;
}
.fixedNav {
position:fixed;
width:100%;
z-index:999;
background-color:#ffffff;
}
.topNav {
background-color:#4D7A97;
color:#FFFFFF;
float:left;
padding:0;
width:100%;
clear:right;
height:2.8em;
padding-top:10px;
overflow:hidden;
font-size:12px;
}
.bottomNav {
margin-top:10px;
background-color:#4D7A97;
color:#FFFFFF;
float:left;
padding:0;
width:100%;
clear:right;
height:2.8em;
padding-top:10px;
overflow:hidden;
font-size:12px;
}
.subNav {
background-color:#dee3e9;
float:left;
width:100%;
overflow:hidden;
font-size:12px;
}
.subNav div {
clear:left;
float:left;
padding:0 0 5px 6px;
text-transform:uppercase;
}
ul.navList, ul.subNavList {
float:left;
margin:0 25px 0 0;
padding:0;
}
ul.navList li{
list-style:none;
float:left;
padding: 5px 6px;
text-transform:uppercase;
}
ul.navListSearch {
float:right;
margin:0 0 0 0;
padding:0;
}
ul.navListSearch li {
list-style:none;
float:right;
padding: 5px 6px;
text-transform:uppercase;
}
ul.navListSearch li label {
position:relative;
right:-16px;
}
ul.subNavList li {
list-style:none;
float:left;
}
.topNav a:link, .topNav a:active, .topNav a:visited, .bottomNav a:link, .bottomNav a:active, .bottomNav a:visited {
color:#FFFFFF;
text-decoration:none;
text-transform:uppercase;
}
.topNav a:hover, .bottomNav a:hover {
text-decoration:none;
color:#bb7a2a;
text-transform:uppercase;
}
.navBarCell1Rev {
background-color:#F8981D;
color:#253441;
margin: auto 5px;
}
.skipNav {
position:absolute;
top:auto;
left:-9999px;
overflow:hidden;
}
/*
* Styles for page header and footer.
*/
.header, .footer {
clear:both;
margin:0 20px;
padding:5px 0 0 0;
}
.indexNav {
position:relative;
font-size:12px;
background-color:#dee3e9;
}
.indexNav ul {
margin-top:0;
padding:5px;
}
.indexNav ul li {
display:inline;
list-style-type:none;
padding-right:10px;
text-transform:uppercase;
}
.indexNav h1 {
font-size:13px;
}
.title {
color:#2c4557;
margin:10px 0;
}
.subTitle {
margin:5px 0 0 0;
}
.header ul {
margin:0 0 15px 0;
padding:0;
}
.footer ul {
margin:20px 0 5px 0;
}
.header ul li, .footer ul li {
list-style:none;
font-size:13px;
}
/*
* Styles for headings.
*/
div.details ul.blockList ul.blockList ul.blockList li.blockList h4, div.details ul.blockList ul.blockList ul.blockListLast li.blockList h4 {
background-color:#dee3e9;
border:1px solid #d0d9e0;
margin:0 0 6px -8px;
padding:7px 5px;
}
ul.blockList ul.blockList ul.blockList li.blockList h3 {
background-color:#dee3e9;
border:1px solid #d0d9e0;
margin:0 0 6px -8px;
padding:7px 5px;
}
ul.blockList ul.blockList li.blockList h3 {
padding:0;
margin:15px 0;
}
ul.blockList li.blockList h2 {
padding:0px 0 20px 0;
}
/*
* Styles for page layout containers.
*/
.contentContainer, .sourceContainer, .classUseContainer, .serializedFormContainer, .constantValuesContainer,
.allClassesContainer, .allPackagesContainer {
clear:both;
padding:10px 20px;
position:relative;
}
.indexContainer {
margin:10px;
position:relative;
font-size:12px;
}
.indexContainer h2 {
font-size:13px;
padding:0 0 3px 0;
}
.indexContainer ul {
margin:0;
padding:0;
}
.indexContainer ul li {
list-style:none;
padding-top:2px;
}
.contentContainer .description dl dt, .contentContainer .details dl dt, .serializedFormContainer dl dt {
font-size:12px;
font-weight:bold;
margin:10px 0 0 0;
color:#4E4E4E;
}
.contentContainer .description dl dd, .contentContainer .details dl dd, .serializedFormContainer dl dd {
margin:5px 0 10px 0px;
font-size:14px;
font-family:'DejaVu Serif', Georgia, "Times New Roman", Times, serif;
}
.serializedFormContainer dl.nameValue dt {
margin-left:1px;
font-size:1.1em;
display:inline;
font-weight:bold;
}
.serializedFormContainer dl.nameValue dd {
margin:0 0 0 1px;
font-size:1.1em;
display:inline;
}
/*
* Styles for lists.
*/
li.circle {
list-style:circle;
}
ul.horizontal li {
display:inline;
font-size:0.9em;
}
ul.inheritance {
margin:0;
padding:0;
}
ul.inheritance li {
display:inline;
list-style:none;
}
ul.inheritance li ul.inheritance {
margin-left:15px;
padding-left:15px;
padding-top:1px;
}
ul.blockList, ul.blockListLast {
margin:10px 0 10px 0;
padding:0;
}
ul.blockList li.blockList, ul.blockListLast li.blockList {
list-style:none;
margin-bottom:15px;
line-height:1.4;
}
ul.blockList ul.blockList li.blockList, ul.blockList ul.blockListLast li.blockList {
padding:0px 20px 5px 10px;
border:1px solid #ededed;
background-color:#f8f8f8;
}
ul.blockList ul.blockList ul.blockList li.blockList, ul.blockList ul.blockList ul.blockListLast li.blockList {
padding:0 0 5px 8px;
background-color:#ffffff;
border:none;
}
ul.blockList ul.blockList ul.blockList ul.blockList li.blockList {
margin-left:0;
padding-left:0;
padding-bottom:15px;
border:none;
}
ul.blockList ul.blockList ul.blockList ul.blockList li.blockListLast {
list-style:none;
border-bottom:none;
padding-bottom:0;
}
table tr td dl, table tr td dl dt, table tr td dl dd {
margin-top:0;
margin-bottom:1px;
}
/*
* Styles for tables.
*/
.overviewSummary, .memberSummary, .typeSummary, .useSummary, .constantsSummary, .deprecatedSummary,
.requiresSummary, .packagesSummary, .providesSummary, .usesSummary {
width:100%;
border-spacing:0;
border-left:1px solid #EEE;
border-right:1px solid #EEE;
border-bottom:1px solid #EEE;
}
.overviewSummary, .memberSummary, .requiresSummary, .packagesSummary, .providesSummary, .usesSummary {
padding:0px;
}
.overviewSummary caption, .memberSummary caption, .typeSummary caption,
.useSummary caption, .constantsSummary caption, .deprecatedSummary caption,
.requiresSummary caption, .packagesSummary caption, .providesSummary caption, .usesSummary caption {
position:relative;
text-align:left;
background-repeat:no-repeat;
color:#253441;
font-weight:bold;
clear:none;
overflow:hidden;
padding:0px;
padding-top:10px;
padding-left:1px;
margin:0px;
white-space:pre;
}
.overviewSummary caption a:link, .memberSummary caption a:link, .typeSummary caption a:link,
.constantsSummary caption a:link, .deprecatedSummary caption a:link,
.requiresSummary caption a:link, .packagesSummary caption a:link, .providesSummary caption a:link,
.usesSummary caption a:link,
.overviewSummary caption a:hover, .memberSummary caption a:hover, .typeSummary caption a:hover,
.constantsSummary caption a:hover, .deprecatedSummary caption a:hover,
.requiresSummary caption a:hover, .packagesSummary caption a:hover, .providesSummary caption a:hover,
.usesSummary caption a:hover,
.overviewSummary caption a:active, .memberSummary caption a:active, .typeSummary caption a:active,
.constantsSummary caption a:active, .deprecatedSummary caption a:active,
.requiresSummary caption a:active, .packagesSummary caption a:active, .providesSummary caption a:active,
.usesSummary caption a:active,
.overviewSummary caption a:visited, .memberSummary caption a:visited, .typeSummary caption a:visited,
.constantsSummary caption a:visited, .deprecatedSummary caption a:visited,
.requiresSummary caption a:visited, .packagesSummary caption a:visited, .providesSummary caption a:visited,
.usesSummary caption a:visited {
color:#FFFFFF;
}
.useSummary caption a:link, .useSummary caption a:hover, .useSummary caption a:active,
.useSummary caption a:visited {
color:#1f389c;
}
.overviewSummary caption span, .memberSummary caption span, .typeSummary caption span,
.useSummary caption span, .constantsSummary caption span, .deprecatedSummary caption span,
.requiresSummary caption span, .packagesSummary caption span, .providesSummary caption span,
.usesSummary caption span {
white-space:nowrap;
padding-top:5px;
padding-left:12px;
padding-right:12px;
padding-bottom:7px;
display:inline-block;
float:left;
background-color:#F8981D;
border: none;
height:16px;
}
.memberSummary caption span.activeTableTab span, .packagesSummary caption span.activeTableTab span,
.overviewSummary caption span.activeTableTab span, .typeSummary caption span.activeTableTab span {
white-space:nowrap;
padding-top:5px;
padding-left:12px;
padding-right:12px;
margin-right:3px;
display:inline-block;
float:left;
background-color:#F8981D;
height:16px;
}
.memberSummary caption span.tableTab span, .packagesSummary caption span.tableTab span,
.overviewSummary caption span.tableTab span, .typeSummary caption span.tableTab span {
white-space:nowrap;
padding-top:5px;
padding-left:12px;
padding-right:12px;
margin-right:3px;
display:inline-block;
float:left;
background-color:#4D7A97;
height:16px;
}
.memberSummary caption span.tableTab, .memberSummary caption span.activeTableTab,
.packagesSummary caption span.tableTab, .packagesSummary caption span.activeTableTab,
.overviewSummary caption span.tableTab, .overviewSummary caption span.activeTableTab,
.typeSummary caption span.tableTab, .typeSummary caption span.activeTableTab {
padding-top:0px;
padding-left:0px;
padding-right:0px;
background-image:none;
float:none;
display:inline;
}
.overviewSummary .tabEnd, .memberSummary .tabEnd, .typeSummary .tabEnd,
.useSummary .tabEnd, .constantsSummary .tabEnd, .deprecatedSummary .tabEnd,
.requiresSummary .tabEnd, .packagesSummary .tabEnd, .providesSummary .tabEnd, .usesSummary .tabEnd {
display:none;
width:5px;
position:relative;
float:left;
background-color:#F8981D;
}
.memberSummary .activeTableTab .tabEnd, .packagesSummary .activeTableTab .tabEnd,
.overviewSummary .activeTableTab .tabEnd, .typeSummary .activeTableTab .tabEnd {
display:none;
width:5px;
margin-right:3px;
position:relative;
float:left;
background-color:#F8981D;
}
.memberSummary .tableTab .tabEnd, .packagesSummary .tableTab .tabEnd,
.overviewSummary .tableTab .tabEnd, .typeSummary .tableTab .tabEnd {
display:none;
width:5px;
margin-right:3px;
position:relative;
background-color:#4D7A97;
float:left;
}
.rowColor th, .altColor th {
font-weight:normal;
}
.overviewSummary td, .memberSummary td, .typeSummary td,
.useSummary td, .constantsSummary td, .deprecatedSummary td,
.requiresSummary td, .packagesSummary td, .providesSummary td, .usesSummary td {
text-align:left;
padding:0px 0px 12px 10px;
}
th.colFirst, th.colSecond, th.colLast, th.colConstructorName, th.colDeprecatedItemName, .useSummary th,
.constantsSummary th, .packagesSummary th, td.colFirst, td.colSecond, td.colLast, .useSummary td,
.constantsSummary td {
vertical-align:top;
padding-right:0px;
padding-top:8px;
padding-bottom:3px;
}
th.colFirst, th.colSecond, th.colLast, th.colConstructorName, th.colDeprecatedItemName, .constantsSummary th,
.packagesSummary th {
background:#dee3e9;
text-align:left;
padding:8px 3px 3px 7px;
}
td.colFirst, th.colFirst {
font-size:13px;
}
td.colSecond, th.colSecond, td.colLast, th.colConstructorName, th.colDeprecatedItemName, th.colLast {
font-size:13px;
}
.constantsSummary th, .packagesSummary th {
font-size:13px;
}
.providesSummary th.colFirst, .providesSummary th.colLast, .providesSummary td.colFirst,
.providesSummary td.colLast {
white-space:normal;
font-size:13px;
}
.overviewSummary td.colFirst, .overviewSummary th.colFirst,
.requiresSummary td.colFirst, .requiresSummary th.colFirst,
.packagesSummary td.colFirst, .packagesSummary td.colSecond, .packagesSummary th.colFirst, .packagesSummary th,
.usesSummary td.colFirst, .usesSummary th.colFirst,
.providesSummary td.colFirst, .providesSummary th.colFirst,
.memberSummary td.colFirst, .memberSummary th.colFirst,
.memberSummary td.colSecond, .memberSummary th.colSecond, .memberSummary th.colConstructorName,
.typeSummary td.colFirst, .typeSummary th.colFirst {
vertical-align:top;
}
.packagesSummary th.colLast, .packagesSummary td.colLast {
white-space:normal;
}
td.colFirst a:link, td.colFirst a:visited,
td.colSecond a:link, td.colSecond a:visited,
th.colFirst a:link, th.colFirst a:visited,
th.colSecond a:link, th.colSecond a:visited,
th.colConstructorName a:link, th.colConstructorName a:visited,
th.colDeprecatedItemName a:link, th.colDeprecatedItemName a:visited,
.constantValuesContainer td a:link, .constantValuesContainer td a:visited,
.allClassesContainer td a:link, .allClassesContainer td a:visited,
.allPackagesContainer td a:link, .allPackagesContainer td a:visited {
font-weight:bold;
}
.tableSubHeadingColor {
background-color:#EEEEFF;
}
.altColor, .altColor th {
background-color:#FFFFFF;
}
.rowColor, .rowColor th {
background-color:#EEEEEF;
}
/*
* Styles for contents.
*/
.description pre {
margin-top:0;
}
.deprecatedContent {
margin:0;
padding:10px 0;
}
.docSummary {
padding:0;
}
ul.blockList ul.blockList ul.blockList li.blockList h3 {
font-style:normal;
}
div.block {
font-size:14px;
font-family:'DejaVu Serif', Georgia, "Times New Roman", Times, serif;
}
td.colLast div {
padding-top:0px;
}
td.colLast a {
padding-bottom:3px;
}
/*
* Styles for formatting effect.
*/
.sourceLineNo {
color:green;
padding:0 30px 0 0;
}
h1.hidden {
visibility:hidden;
overflow:hidden;
font-size:10px;
}
.block {
display:block;
margin:3px 10px 2px 0px;
color:#474747;
}
.deprecatedLabel, .descfrmTypeLabel, .implementationLabel, .memberNameLabel, .memberNameLink,
.moduleLabelInPackage, .moduleLabelInType, .overrideSpecifyLabel, .packageLabelInType,
.packageHierarchyLabel, .paramLabel, .returnLabel, .seeLabel, .simpleTagLabel,
.throwsLabel, .typeNameLabel, .typeNameLink, .searchTagLink {
font-weight:bold;
}
.deprecationComment, .emphasizedPhrase, .interfaceName {
font-style:italic;
}
.deprecationBlock {
font-size:14px;
font-family:'DejaVu Serif', Georgia, "Times New Roman", Times, serif;
border-style:solid;
border-width:thin;
border-radius:10px;
padding:10px;
margin-bottom:10px;
margin-right:10px;
display:inline-block;
}
div.block div.deprecationComment, div.block div.block span.emphasizedPhrase,
div.block div.block span.interfaceName {
font-style:normal;
}
div.contentContainer ul.blockList li.blockList h2 {
padding-bottom:0px;
}
/*
* Styles for IFRAME.
*/
.mainContainer {
margin:0 auto;
padding:0;
height:100%;
width:100%;
position:fixed;
top:0;
left:0;
}
.leftContainer {
height:100%;
position:fixed;
width:320px;
}
.leftTop {
position:relative;
float:left;
width:315px;
top:0;
left:0;
height:30%;
border-right:6px solid #ccc;
border-bottom:6px solid #ccc;
}
.leftBottom {
position:relative;
float:left;
width:315px;
bottom:0;
left:0;
height:70%;
border-right:6px solid #ccc;
border-top:1px solid #000;
}
.rightContainer {
position:absolute;
left:320px;
top:0;
bottom:0;
height:100%;
right:0;
border-left:1px solid #000;
}
.rightIframe {
margin:0;
padding:0;
height:100%;
right:30px;
width:100%;
overflow:visible;
margin-bottom:30px;
}
/*
* Styles specific to HTML5 elements.
*/
main, nav, header, footer, section {
display:block;
}
/*
* Styles for javadoc search.
*/
.ui-autocomplete-category {
font-weight:bold;
font-size:15px;
padding:7px 0 7px 3px;
background-color:#4D7A97;
color:#FFFFFF;
}
.resultItem {
font-size:13px;
}
.ui-autocomplete {
max-height:85%;
max-width:65%;
overflow-y:scroll;
overflow-x:scroll;
white-space:nowrap;
box-shadow: 0 3px 6px rgba(0,0,0,0.16), 0 3px 6px rgba(0,0,0,0.23);
}
ul.ui-autocomplete {
position:fixed;
z-index:999999;
}
ul.ui-autocomplete li {
float:left;
clear:both;
width:100%;
}
.resultHighlight {
font-weight:bold;
}
#search {
background-image:url('resources/glass.png');
background-size:13px;
background-repeat:no-repeat;
background-position:2px 3px;
padding-left:20px;
position:relative;
right:-18px;
}
#reset {
background-color: rgb(255,255,255);
background-image:url('resources/x.png');
background-position:center;
background-repeat:no-repeat;
background-size:12px;
border:0 none;
width:16px;
height:17px;
position:relative;
left:-4px;
top:-4px;
font-size:0px;
}
.watermark {
color:#545454;
}
.searchTagDescResult {
font-style:italic;
font-size:11px;
}
.searchTagHolderResult {
font-style:italic;
font-size:12px;
}
.searchTagResult:before, .searchTagResult:target {
color:red;
}
.moduleGraph span {
display:none;
position:absolute;
}
.moduleGraph:hover span {
display:block;
margin: -100px 0 0 100px;
z-index: 1;
}
.methodSignature {
white-space:normal;
}
/*
* Styles for user-provided tables.
*
* borderless:
* No borders, vertical margins, styled caption.
* This style is provided for use with existing doc comments.
* In general, borderless tables should not be used for layout purposes.
*
* plain:
* Plain borders around table and cells, vertical margins, styled caption.
* Best for small tables or for complex tables for tables with cells that span
* rows and columns, when the "striped" style does not work well.
*
* striped:
* Borders around the table and vertical borders between cells, striped rows,
* vertical margins, styled caption.
* Best for tables that have a header row, and a body containing a series of simple rows.
*/
table.borderless,
table.plain,
table.striped {
margin-top: 10px;
margin-bottom: 10px;
}
table.borderless > caption,
table.plain > caption,
table.striped > caption {
font-weight: bold;
font-size: smaller;
}
table.borderless th, table.borderless td,
table.plain th, table.plain td,
table.striped th, table.striped td {
padding: 2px 5px;
}
table.borderless,
table.borderless > thead > tr > th, table.borderless > tbody > tr > th, table.borderless > tr > th,
table.borderless > thead > tr > td, table.borderless > tbody > tr > td, table.borderless > tr > td {
border: none;
}
table.borderless > thead > tr, table.borderless > tbody > tr, table.borderless > tr {
background-color: transparent;
}
table.plain {
border-collapse: collapse;
border: 1px solid black;
}
table.plain > thead > tr, table.plain > tbody tr, table.plain > tr {
background-color: transparent;
}
table.plain > thead > tr > th, table.plain > tbody > tr > th, table.plain > tr > th,
table.plain > thead > tr > td, table.plain > tbody > tr > td, table.plain > tr > td {
border: 1px solid black;
}
table.striped {
border-collapse: collapse;
border: 1px solid black;
}
table.striped > thead {
background-color: #E3E3E3;
}
table.striped > thead > tr > th, table.striped > thead > tr > td {
border: 1px solid black;
}
table.striped > tbody > tr:nth-child(even) {
background-color: #EEE
}
table.striped > tbody > tr:nth-child(odd) {
background-color: #FFF
}
table.striped > tbody > tr > th, table.striped > tbody > tr > td {
border-left: 1px solid black;
border-right: 1px solid black;
}
table.striped > tbody > tr > th {
font-weight: normal;
}

View file

@ -0,0 +1,73 @@
#BlueJ package file
dependency1.from=BenchmarkBase
dependency1.to=Set
dependency1.type=UsesDependency
dependency2.from=BenchmarkBase
dependency2.to=MeinBenchmark
dependency2.type=UsesDependency
editor.fx.0.height=739
editor.fx.0.width=1221
editor.fx.0.x=552
editor.fx.0.y=100
objectbench.height=128
objectbench.width=996
package.divider.horizontal=0.654
package.divider.vertical=0.7867298578199052
package.editor.height=491
package.editor.width=885
package.editor.x=469
package.editor.y=133
package.frame.height=733
package.frame.width=1036
package.numDependencies=2
package.numTargets=6
package.showExtends=true
package.showUses=true
project.charset=UTF-8
readme.height=58
readme.name=@README
readme.width=47
readme.x=10
readme.y=10
target1.height=50
target1.name=BenchmarkBase
target1.showInterface=false
target1.type=ClassTarget
target1.width=120
target1.x=60
target1.y=200
target2.height=50
target2.name=MeinBenchmark
target2.showInterface=false
target2.type=ClassTarget
target2.width=130
target2.x=150
target2.y=300
target3.height=50
target3.name=Set
target3.showInterface=false
target3.type=AbstractTarget
target3.width=80
target3.x=320
target3.y=20
target4.height=50
target4.name=SetVarianteC
target4.showInterface=false
target4.type=ClassTarget
target4.width=110
target4.x=440
target4.y=190
target5.height=50
target5.name=SetVarianteB
target5.showInterface=false
target5.type=ClassTarget
target5.width=110
target5.x=320
target5.y=190
target6.height=50
target6.name=SetVarianteA
target6.showInterface=false
target6.type=ClassTarget
target6.width=110
target6.x=200
target6.y=190

View file

@ -0,0 +1,3 @@
Quelle: https://github.com/afeinberg/sizeof
GNU Public License 2.0
Modifikationen von Rainer Helfrich

View file

@ -0,0 +1,124 @@
import java.util.*;
import net.sourceforge.sizeof.*;
import java.io.*;
import java.lang.reflect.*;
/**
* Testet Set-Varianten auf ihre Effizenz
*
* @author Rainer Helfrich
* @version November 2020
*/
public class BenchmarkBase
{
protected Set theSet;
Random zufallszahlen;
protected BenchmarkBase()
{
zufallszahlen = new Random();
}
protected void init(Class c) throws Exception
{
theSet = (Set)c.newInstance();
}
/**
* Wird benötigt, um in einem neuen Prozess den Speichertest durchzuführen.
* Sollte nicht direkt aufgerufen werden.
*/
public static void main(String[] args)
{
try
{
int anzahl = Integer.parseInt(args[0]);
Class c = Class.forName(args[1]);
MeinBenchmark b = new MeinBenchmark();
b.init(c);
Method m = b.getClass().getMethod(args[2], new Class[]{int.class});
m.invoke(b, new Object[]{anzahl});
System.out.println("@"+SizeOf.deepSizeOf((Object)b.theSet)+"@");
}
catch(Exception x)
{
System.out.println(x.getMessage());
}
}
/**
* Führt einen Laufzeittest aus. Wiederholt den Test 100 mal, um Ausreißer zu vermeiden.
* Sollte nicht direkt aufgerufen werden.
* @param typ Die Unterklasse von Set, die getestet werden soll
* @param methode Der Name der Methode in der Klasse MeinBenchmark, die zum Testen ausgeführt werden soll
* @param anzahl Ein Parameter für die Methode namens "methode", der z.B. die Anzahl der Operationen steuert
* @return Die Laufzeit des Tests in Mikrosekunden (µs)
*/
protected static int laufzeitTest(String typ, String methode, int anzahl)
{
try
{
Class c = Class.forName(typ);
MeinBenchmark b = new MeinBenchmark();
final int DURCHGAENGE = 100;
long totalTime = 0;
for (int i = 0; i < DURCHGAENGE; i++)
{
b.init(c);
Method m = b.getClass().getMethod(methode, new Class[]{int.class});
long vorher = System.nanoTime();
m.invoke(b, new Object[]{anzahl});
long nachher = System.nanoTime();
totalTime += (nachher - vorher) / 1000;
}
return (int)(totalTime / DURCHGAENGE);
}
catch(Exception x)
{
System.out.println(x.getMessage());
}
return -1;
}
/**
* Führt einen Speichertest aus. Sollte nicht direkt aufgerufen werden.
* @param typ Die Unterklasse von Set, die getestet werden soll
* @param methode Der Name der Methode in der Klasse MeinBenchmark, die zum Testen ausgeführt werden soll
* @param anzahl Ein Parameter für die Methode namens "methode", der z.B. die Anzahl der Operationen steuert
* @return Die Größe der Set in Bytes, nachdem die Testmethode ausgeführt wurde
*/
protected static int speicherTest(String typ, String methode, int anzahl)
{
try
{
Process process = new ProcessBuilder("java","-javaagent:./+libs/SizeOf.jar", MeinBenchmark.class.getName(), ""+anzahl, typ, methode).start();
InputStream is = process.getInputStream();
InputStreamReader isr = new InputStreamReader(is);
BufferedReader br = new BufferedReader(isr);
String line;
StringBuilder sb = new StringBuilder();
while ((line = br.readLine()) != null) {
sb.append(line);
}
String strOut = sb.toString();
int idx = strOut.indexOf("@");
if (idx < 0)
{
throw new Exception("Fehler: Ungültige Ausgabe:\n"+strOut);
}
int idx2 = strOut.indexOf("@", idx+1);
if (idx2 < 0)
{
throw new Exception("Fehler: Ungültige Ausgabe:\n"+strOut);
}
int n = Integer.parseInt(strOut.substring(idx+1, idx2));
return n;
}
catch(Exception x)
{
System.out.println(x.getMessage());
}
return -1;
}
}

View file

@ -0,0 +1,5 @@
PROJEKTBEZEICHNUNG: Set-Benchmark
PROJEKTZWECK: Konstruieren Sie einen Benchmark, um herauszufinden, um welche Implementation es sich bei einer Set handelt.
VERSION oder DATUM: November 2020
WIE IST DAS PROJEKT ZU STARTEN: Nachdem Sie in der Methode meinTest der Klasse MeinBenchmark einen Test definiert haben, rufen Sie eine der statischen Methoden speicherTestAusfuehren() oder laufzeitTestAusfuehren() auf.
AUTOR(EN): Rainer Helfrich, ZPG Informatik

View file

@ -0,0 +1,107 @@
/**
* Schnittstelle des ADTs Set
*
* @author Rainer Helfrich
* @version 26.9.2020
*/
public abstract class Set
{
/**
* Fügt einen neuen Wert in die Menge ein, falls er nicht bereits enthalten ist.
* @param wert Der einzufügende Wert
*/
public abstract void einfuegen(int wert);
/**
* Entfernt einen Wert aus der Menge, falls er enthalten ist.
* @param wert Der zu entfernende Wert
*/
public abstract void entfernen(int wert);
/**
* Gibt zurück, ob ein bestimmter Wert in der Menge enthalten ist.
* @param wert Der zu suchende Wert
*/
public abstract boolean enthaelt(int wert);
/**
* Bestimmt die Schnittmenge der Menge selbst und der Menge s.
* @param s Die Menge, mit der die Schnittmenge bestimmt werden soll
* @return Ein neues Set, das die Schnittmenge der beiden Mengen repräsentiert.
*/
public abstract Set schnittmenge(Set s);
/**
* Bestimmt die Vereinigungsmenge der Menge selbst und der Menge s.
* @param s Die Menge, mit der die Vereinigungsmenge bestimmt werden soll
* @return Ein neues Set, das die Vereinigungsmenge der beiden Mengen repräsentiert.
*/
public abstract Set vereinigungsmenge(Set s);
/**
* Gibt zurück, ob diese Menge eine Untermenge der Menge s ist.
* @param s Die Menge, die geprüft werden soll.
* @return true, wenn jedes Element dieser Menge in s enthalten ist; false sonst
*/
public abstract boolean untermenge(Set s);
/**
* Bestimmt die Differenzmenge der Menge selbst und der Menge s.
* @param s Die Menge, die von dieser Menge abgezogen werden soll.
* @return Ein neues Set, das alle Elemente dieser Menge enthält, die nicht in s enthalten sind.
*/
public abstract Set differenz(Set s);
/**
* Gibt die Mächtigkeit der Menge zurück
* @return Die Anzahl der Elemente in der Menge
*/
public abstract int anzahl();
/**
* Gibt zurück, ob die Menge kein Element enthält
* @return true, wenn die Menge leer ist; false sonst
*/
public abstract boolean istLeer();
protected abstract int[] alsArray();
/**
* Gibt zurück, ob diese Menge und s die gleichen Elemente enthalten
* @param s Die zu überprüfende Menge
* @return true, wenn beide Mengen die gleichen Elemente enthalten; false sonst
*/
public boolean gleich(Set s)
{
return untermenge(s) && s.untermenge(this);
}
/**
* Gibt die String-Darstellung der Menge (aufzählende Darstellung) zurück
* @return Ein String, der alle Elemente der Menge aufzählt.
*/
@Override
public String toString()
{
if (istLeer())
{
return "{ }";
}
StringBuilder sb = new StringBuilder();
for(int v : alsArray())
{
if (sb.length() == 0)
{
sb.append("{ ");
}
else
{
sb.append(", ");
}
sb.append(v);
}
sb.append(" }");
return sb.toString();
}
}

View file

@ -0,0 +1,240 @@
import java.util.ArrayList;
/**
* Set-Variante A
*
* @author Rainer Helfrich
* @version 27.9.2020
*/
public class SetVarianteA extends Set
{
private ArrayList<Integer>[] daten;
private int anzahl;
/**
* Erzeugt ein neues leeres Set
*/
public SetVarianteA()
{
this(10);
}
private SetVarianteA(int capacity)
{
if (capacity < 10)
{
capacity = 10;
}
daten = new ArrayList[capacity*2];
anzahl = 0;
}
protected int[] alsArray()
{
int[] ergebnis = new int[anzahl];
int index = 0;
for (ArrayList<Integer> l : daten)
{
if (l != null)
{
for (int x : l)
{
ergebnis[index] = x;
index++;
}
}
}
return ergebnis;
}
/**
* Gibt zurück, ob die Menge kein Element enthält
* @return true, wenn die Menge leer ist; false sonst
*/
public boolean istLeer()
{
for (ArrayList<Integer> l : daten)
{
if (l != null && !l.isEmpty())
{
return false;
}
}
return true;
}
/**
* Gibt die Mächtigkeit der Menge zurück
* @return Die Anzahl der Elemente in der Menge
*/
public int anzahl()
{
return anzahl;
}
/**
* Bestimmt die Differenzmenge der Menge selbst und der Menge s.
* @param s Die Menge, die von dieser Menge abgezogen werden soll.
* @return Ein neues Set, das alle Elemente dieser Menge enthält, die nicht in s enthalten sind.
*/
public Set differenz(Set s)
{
Set ergebnis = new SetVarianteA(anzahl);
for (ArrayList<Integer> l : daten)
{
if (l != null)
{
for (int n : l)
{
if (!s.enthaelt(n))
{
ergebnis.einfuegen(n);
}
}
}
}
return ergebnis;
}
/**
* Gibt zurück, ob diese Menge eine Untermenge der Menge s ist.
* @param s Die Menge, die geprüft werden soll.
* @return true, wenn jedes Element dieser Menge in s enthalten ist; false sonst
*/
public boolean untermenge(Set s)
{
for (ArrayList<Integer> l : daten)
{
if (l != null)
{
for (int n : l)
{
if (!s.enthaelt(n))
{
return false;
}
}
}
}
return true;
}
/**
* Bestimmt die Vereinigungsmenge der Menge selbst und der Menge s.
* @param s Die Menge, mit der die Vereinigungsmenge bestimmt werden soll
* @return Ein neues Set, das die Vereinigungsmenge der beiden Mengen repräsentiert.
*/
public Set vereinigungsmenge(Set s)
{
SetVarianteA ergebnis = new SetVarianteA(s.anzahl() + anzahl());
for (ArrayList<Integer> l : daten)
{
if (l != null)
{
for (int n : l)
{
ergebnis.einfuegen(n);
}
}
}
for (int n : s.alsArray())
{
ergebnis.einfuegen(n);
}
return ergebnis;
}
/**
* Fügt einen neuen Wert in die Menge ein, falls er nicht bereits enthalten ist.
* @param wert Der einzufügende Wert
*/
public void einfuegen(int n)
{
if ((double)anzahl / daten.length > 0.5)
{
rehash();
}
int hash = n % daten.length;
if (daten[hash] == null)
{
daten[hash] = new ArrayList<Integer>(2);
}
if (!daten[hash].contains(n))
{
anzahl++;
daten[hash].add(n);
}
}
private void rehash()
{
ArrayList<Integer>[] tmp = new ArrayList[2*daten.length+1];
for (ArrayList<Integer> l : daten)
{
if (l != null)
{
for (int n : l)
{
int hash = n % tmp.length;
if (tmp[hash] == null)
{
tmp[hash] = new ArrayList<Integer>(2);
}
tmp[hash].add(n);
}
}
}
daten = tmp;
}
/**
* Bestimmt die Schnittmenge der Menge selbst und der Menge s.
* @param s Die Menge, mit der die Schnittmenge bestimmt werden soll
* @return Ein neues Set, das die Schnittmenge der beiden Mengen repräsentiert.
*/
public Set schnittmenge(Set s)
{
SetVarianteA ergebnis = new SetVarianteA(anzahl);
for (ArrayList<Integer> l : daten)
{
if (l != null)
{
for (int n : l)
{
if (s.enthaelt(n))
{
ergebnis.einfuegen(n);
}
}
}
}
return ergebnis;
}
/**
* Gibt zurück, ob ein bestimmter Wert in der Menge enthalten ist.
* @param wert Der zu suchende Wert
*/
public boolean enthaelt(int n)
{
int hash = n % daten.length;
return daten[hash] != null && daten[hash].contains(n);
}
/**
* Entfernt einen Wert aus der Menge, falls er enthalten ist.
* @param wert Der zu entfernende Wert
*/
public void entfernen(int n)
{
int hash = n % daten.length;
if (daten[hash] != null)
{
if (daten[hash].contains(n))
{
anzahl--;
daten[hash].remove(new Integer(n));
}
}
}
}

View file

@ -0,0 +1,151 @@
import java.util.ArrayList;
/**
* Set-Variante B
*
* @author Rainer Helfrich
* @version 26.9.2020
*/
public class SetVarianteB extends Set
{
private ArrayList<Integer> daten;
/**
* Erzeugt ein neues leeres Set
*/
public SetVarianteB()
{
daten = new ArrayList<Integer>();
}
/**
* Gibt zurück, ob die Menge kein Element enthält
* @return true, wenn die Menge leer ist; false sonst
*/
public boolean istLeer()
{
return daten.isEmpty();
}
/**
* Gibt die Mächtigkeit der Menge zurück
* @return Die Anzahl der Elemente in der Menge
*/
public int anzahl()
{
return daten.size();
}
/**
* Bestimmt die Differenzmenge der Menge selbst und der Menge s.
* @param s Die Menge, die von dieser Menge abgezogen werden soll.
* @return Ein neues Set, das alle Elemente dieser Menge enthält, die nicht in s enthalten sind.
*/
public Set differenz(Set s)
{
Set ergebnis = new SetVarianteB();
for(int v : daten)
{
if (!s.enthaelt(v))
{
ergebnis.einfuegen(v);
}
}
return ergebnis;
}
/**
* Gibt zurück, ob diese Menge eine Untermenge der Menge s ist.
* @param s Die Menge, die geprüft werden soll.
* @return true, wenn jedes Element dieser Menge in s enthalten ist; false sonst
*/
public boolean untermenge(Set s)
{
for (int v : daten)
{
if (!s.enthaelt(v))
{
return false;
}
}
return true;
}
/**
* Bestimmt die Vereinigungsmenge der Menge selbst und der Menge s.
* @param s Die Menge, mit der die Vereinigungsmenge bestimmt werden soll
* @return Ein neues Set, das die Vereinigungsmenge der beiden Mengen repräsentiert.
*/
public Set vereinigungsmenge(Set s)
{
Set ergebnis = new SetVarianteB();
for (int v : daten)
{
ergebnis.einfuegen(v);
}
for (int v : s.alsArray())
{
ergebnis.einfuegen(v);
}
return ergebnis;
}
protected int[] alsArray()
{
int[] ergebnis = new int[anzahl()];
for (int i = 0; i < anzahl(); i++)
{
ergebnis[i] = daten.get(i);
}
return ergebnis;
}
/**
* Bestimmt die Schnittmenge der Menge selbst und der Menge s.
* @param s Die Menge, mit der die Schnittmenge bestimmt werden soll
* @return Ein neues Set, das die Schnittmenge der beiden Mengen repräsentiert.
*/
public Set schnittmenge(Set s)
{
Set ergebnis = new SetVarianteB();
for (int v : daten)
{
if (s.enthaelt(v))
{
ergebnis.einfuegen(v);
}
}
return ergebnis;
}
/**
* Gibt zurück, ob ein bestimmter Wert in der Menge enthalten ist.
* @param wert Der zu suchende Wert
*/
public boolean enthaelt(int x)
{
return daten.contains(x);
}
/**
* Entfernt einen Wert aus der Menge, falls er enthalten ist.
* @param wert Der zu entfernende Wert
*/
public void entfernen(int wert)
{
daten.remove(new Integer(wert));
}
/**
* Fügt einen neuen Wert in die Menge ein, falls er nicht bereits enthalten ist.
* @param wert Der einzufügende Wert
*/
public void einfuegen(int wert)
{
if (!daten.contains(wert))
{
daten.add(wert);
}
}
}

View file

@ -0,0 +1,294 @@
import java.util.ArrayList;
/**
* Set-Variante C
*
* @author Rainer Helfrich
* @version 26.9.2020
*/
public class SetVarianteC extends Set
{
private ArrayList<Integer> daten;
/**
* Erzeugt ein neues leeres Set
*/
public SetVarianteC()
{
daten = new ArrayList<Integer>();
}
protected int[] alsArray()
{
int[] ergebnis = new int[anzahl()];
int index = 0;
for (int i = 0; i < 32*daten.size(); i++)
{
if (enthaelt(i))
{
ergebnis[index] = i;
index++;
}
}
return ergebnis;
}
/**
* Gibt zurück, ob die Menge kein Element enthält
* @return true, wenn die Menge leer ist; false sonst
*/
public boolean istLeer()
{
for (int v : daten)
{
if (v != 0)
{
return false;
}
}
return true;
}
/**
* Gibt zurück, ob ein bestimmter Wert in der Menge enthalten ist.
* @param wert Der zu suchende Wert
*/
public boolean enthaelt(int x)
{
if (x >= 32*daten.size() || x < 0)
{
return false;
}
int i = x / 32;
int j = x % 32;
int mask = 1 << j;
return (daten.get(i) & mask) != 0;
}
/**
* Gibt die Mächtigkeit der Menge zurück
* @return Die Anzahl der Elemente in der Menge
*/
public int anzahl()
{
int laenge = 0;
for (int i : daten)
{
laenge += Integer.bitCount(i);
}
return laenge;
}
/**
* Bestimmt die Differenzmenge der Menge selbst und der Menge s.
* @param s Die Menge, die von dieser Menge abgezogen werden soll.
* @return Ein neues Set, das alle Elemente dieser Menge enthält, die nicht in s enthalten sind.
*/
public Set differenz(Set s)
{
SetVarianteC ergebnis = new SetVarianteC();
if (s instanceof SetVarianteC)
{
SetVarianteC bs = (SetVarianteC)s;
for (int i = 0; i < Math.min(daten.size(), bs.daten.size()); i++)
{
ergebnis.daten.add(daten.get(i) & ~(bs.daten.get(i)));
}
for (int i = bs.daten.size(); i < daten.size(); i++)
{
ergebnis.daten.add(daten.get(i));
}
}
else
{
for (int i = 0; i < 32*daten.size(); i++)
{
if (enthaelt(i) && !s.enthaelt(i))
{
ergebnis.einfuegen(i);
}
}
}
return ergebnis;
}
/**
* Fügt einen neuen Wert in die Menge ein, falls er nicht bereits enthalten ist.
* @param wert Der einzufügende Wert
*/
public void einfuegen(int x)
{
if (x >= 0)
{
int i = x / 32;
daten.ensureCapacity(i+1);
while(i >= daten.size())
{
daten.add(0);
}
int j = x % 32;
int mask = 1 << j;
daten.set(i, daten.get(i) | mask);
}
}
/**
* Gibt zurück, ob diese Menge eine Untermenge der Menge s ist.
* @param s Die Menge, die geprüft werden soll.
* @return true, wenn jedes Element dieser Menge in s enthalten ist; false sonst
*/
public boolean untermenge(Set s)
{
if (s instanceof SetVarianteC)
{
SetVarianteC bs = (SetVarianteC)s;
for (int i = 0; i < Math.min(daten.size(), bs.daten.size()); i++)
{
int a = daten.get(i);
int b = bs.daten.get(i);
if ((a & ~b) != 0)
{
return false;
}
}
for (int i = bs.daten.size(); i < daten.size(); i++)
{
if (daten.get(i) != 0)
{
return false;
}
}
return true;
}
else
{
for (int i = 0; i < 32*daten.size(); i++)
{
if (enthaelt(i) && !s.enthaelt(i))
{
return false;
}
}
return true;
}
}
/**
* Bestimmt die Vereinigungsmenge der Menge selbst und der Menge s.
* @param s Die Menge, mit der die Vereinigungsmenge bestimmt werden soll
* @return Ein neues Set, das die Vereinigungsmenge der beiden Mengen repräsentiert.
*/
public Set vereinigungsmenge(Set s)
{
SetVarianteC ergebnis = new SetVarianteC();
if (s instanceof SetVarianteC)
{
SetVarianteC bs = (SetVarianteC)s;
for (int i = 0; i < Math.min(daten.size(), bs.daten.size()); i++)
{
ergebnis.daten.add(daten.get(i) | bs.daten.get(i));
}
for (int i = daten.size(); i < bs.daten.size(); i++)
{
ergebnis.daten.add(bs.daten.get(i));
}
for (int i = bs.daten.size(); i < daten.size(); i++)
{
ergebnis.daten.add(daten.get(i));
}
}
else
{
int[] a = s.alsArray();
ergebnis.daten.addAll(daten);
for (int n : a)
{
ergebnis.einfuegen(n);
}
}
return ergebnis;
}
/**
* Bestimmt die Schnittmenge der Menge selbst und der Menge s.
* @param s Die Menge, mit der die Schnittmenge bestimmt werden soll
* @return Ein neues Set, das die Schnittmenge der beiden Mengen repräsentiert.
*/
public Set schnittmenge(Set s)
{
SetVarianteC ergebnis = new SetVarianteC();
if (s instanceof SetVarianteC)
{
SetVarianteC bs = (SetVarianteC)s;
for (int i = 0; i < Math.min(daten.size(), bs.daten.size()); i++)
{
ergebnis.daten.add(daten.get(i) & bs.daten.get(i));
}
}
else
{
for (int i = 0; i < 32*daten.size(); i++)
{
if (enthaelt(i) && s.enthaelt(i))
{
ergebnis.einfuegen(i);
}
}
}
return ergebnis;
}
/**
* Entfernt einen Wert aus der Menge, falls er enthalten ist.
* @param wert Der zu entfernende Wert
*/
public void entfernen(int x)
{
if (x < 32*daten.size() && x >= 0)
{
int i = x / 32;
int j = x % 32;
int mask = ~(1 << j);
daten.set(i, daten.get(i) & mask);
}
}
/**
* Gibt zurück, ob diese Menge und s die gleichen Elemente enthalten
* @param s Die zu überprüfende Menge
* @return true, wenn beide Mengen die gleichen Elemente enthalten; false sonst
*/
public boolean gleich(Set s)
{
if (s instanceof SetVarianteC)
{
SetVarianteC bs = (SetVarianteC)s;
for (int i = 0; i < Math.min(daten.size(), bs.daten.size()); i++)
{
if (daten.get(i) != bs.daten.get(i))
{
return false;
}
}
for (int i = daten.size(); i < bs.daten.size(); i++)
{
if (bs.daten.get(i) != 0)
{
return false;
}
}
for (int i = bs.daten.size(); i < daten.size(); i++)
{
if (daten.get(i) != 0)
{
return false;
}
}
return true;
}
else
{
return super.gleich(s);
}
}
}

View file

@ -0,0 +1,73 @@
#BlueJ package file
dependency1.from=BenchmarkBase
dependency1.to=Set
dependency1.type=UsesDependency
dependency2.from=BenchmarkBase
dependency2.to=MeinBenchmark
dependency2.type=UsesDependency
editor.fx.0.height=739
editor.fx.0.width=1439
editor.fx.0.x=310
editor.fx.0.y=51
objectbench.height=128
objectbench.width=996
package.divider.horizontal=0.654
package.divider.vertical=0.7867298578199052
package.editor.height=491
package.editor.width=885
package.editor.x=469
package.editor.y=133
package.frame.height=733
package.frame.width=1036
package.numDependencies=2
package.numTargets=6
package.showExtends=true
package.showUses=true
project.charset=UTF-8
readme.height=60
readme.name=@README
readme.width=49
readme.x=10
readme.y=10
target1.height=50
target1.name=BenchmarkBase
target1.showInterface=false
target1.type=ClassTarget
target1.width=120
target1.x=60
target1.y=200
target2.height=50
target2.name=MeinBenchmark
target2.showInterface=false
target2.type=ClassTarget
target2.width=130
target2.x=150
target2.y=300
target3.height=50
target3.name=Set
target3.showInterface=false
target3.type=AbstractTarget
target3.width=80
target3.x=320
target3.y=20
target4.height=50
target4.name=SetVarianteC
target4.showInterface=false
target4.type=ClassTarget
target4.width=110
target4.x=440
target4.y=190
target5.height=50
target5.name=SetVarianteB
target5.showInterface=false
target5.type=ClassTarget
target5.width=110
target5.x=320
target5.y=190
target6.height=50
target6.name=SetVarianteA
target6.showInterface=false
target6.type=ClassTarget
target6.width=110
target6.x=200
target6.y=190

View file

@ -0,0 +1,11 @@
= Material :
|===
|Zuordnung|
|Klassenstufe|
|Bildungsplanbezug |
|Werkzeug|
|Autoren|
|===
== Inhalt