summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/de/fhswf/in/inf/java1/aufgabe10/LineWordCount.java79
-rw-r--r--src/de/fhswf/in/inf/java1/aufgabe10/ParallelWordCount.java67
-rw-r--r--src/de/fhswf/in/inf/java1/aufgabe10/WordCountTest.java2
3 files changed, 66 insertions, 82 deletions
diff --git a/src/de/fhswf/in/inf/java1/aufgabe10/LineWordCount.java b/src/de/fhswf/in/inf/java1/aufgabe10/LineWordCount.java
deleted file mode 100644
index e4356a3..0000000
--- a/src/de/fhswf/in/inf/java1/aufgabe10/LineWordCount.java
+++ /dev/null
@@ -1,79 +0,0 @@
-/**
- *
- */
-package de.fhswf.in.inf.java1.aufgabe10;
-
-import java.util.concurrent.ConcurrentSkipListMap;
-
-/**
- * Counts the words in one line.
- *
- * @author $Author: $
- * @version $Revision: $, $Date: $ UTC
- */
-public class LineWordCount implements Runnable
-{
-
- private String[] lineArray;
-
- private ConcurrentSkipListMap<String, Integer> lineWordMap;
-
- private static final Integer NEWVALUE = new Integer(1);
-
- /**
- * Creates the object which will be threaded.
- *
- * @param wordMap
- * The wordMap into which the counts should be added.
- * @param line
- * The line to be counted.
- */
- public LineWordCount(ConcurrentSkipListMap<String, Integer> wordMap,
- String line)
- {
- if (wordMap == null)
- {
- throw new IllegalArgumentException("WordMap can't be null.");
- }
- if (line == null)
- {
- throw new IllegalArgumentException("Line can't be null.");
- }
- if (line.isEmpty())
- {
- throw new IllegalArgumentException("Line can't be empty.");
- }
- lineWordMap = wordMap;
- lineArray = line.split("[^\\p{IsAlphabetic}\\p{Digit}]+");
- }
-
- /*
- * (non-Javadoc)
- *
- * @see java.lang.Runnable#run()
- */
- @Override
- public final void run()
- {
- for (String word : lineArray)
- {
- // Split creates empty String, if first char is a split char.
- if (!word.isEmpty())
- {
- word = word.toLowerCase();
- boolean success;
-
- do
- {
- success = true;
- Integer tmp = lineWordMap.putIfAbsent(word, NEWVALUE);
- if (tmp != null)
- {
- success = lineWordMap.replace(word, tmp, tmp + 1);
- }
- }
- while (!success);
- }
- }
- }
-}
diff --git a/src/de/fhswf/in/inf/java1/aufgabe10/ParallelWordCount.java b/src/de/fhswf/in/inf/java1/aufgabe10/ParallelWordCount.java
index 5793f02..04a2bcb 100644
--- a/src/de/fhswf/in/inf/java1/aufgabe10/ParallelWordCount.java
+++ b/src/de/fhswf/in/inf/java1/aufgabe10/ParallelWordCount.java
@@ -22,6 +22,70 @@ import java.util.concurrent.TimeUnit;
*/
public class ParallelWordCount
{
+ private static final Integer NEWVALUE = new Integer(1);
+
+ /**
+ * Counts words in one line.
+ *
+ * @author $Author: $
+ * @version $Revision: $, $Date: $ UTC
+ */
+ private class LineWordCount implements Runnable
+ {
+
+ private String[] lineArray;
+
+ /**
+ * Creates the object which will be threaded.
+ *
+ * @param wordMap
+ * The wordMap into which the counts should be added.
+ * @param line
+ * The line to be counted.
+ */
+ public LineWordCount(String line)
+ {
+ if (line == null)
+ {
+ throw new IllegalArgumentException("Line can't be null.");
+ }
+ if (line.isEmpty())
+ {
+ throw new IllegalArgumentException("Line can't be empty.");
+ }
+ lineArray = line.split("[^\\p{IsAlphabetic}\\p{Digit}]+");
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see java.lang.Runnable#run()
+ */
+ @Override
+ public final void run()
+ {
+ for (String word : lineArray)
+ {
+ // Split creates empty String, if first char is a split char.
+ if (!word.isEmpty())
+ {
+ word = word.toLowerCase();
+ boolean success;
+
+ do
+ {
+ success = true;
+ Integer tmp = wordMap.putIfAbsent(word, NEWVALUE);
+ if (tmp != null)
+ {
+ success = wordMap.replace(word, tmp, tmp + 1);
+ }
+ }
+ while (!success);
+ }
+ }
+ }
+ }
private static final int TIMEOUT = 30;
@@ -43,7 +107,6 @@ public class ParallelWordCount
*/
public final void readFile(File file)
{
-
try (BufferedReader f = new BufferedReader(new FileReader(file)))
{
if (wordMap == null)
@@ -60,7 +123,7 @@ public class ParallelWordCount
while ((line = f.readLine()) != null)
{
- Runnable worker = new LineWordCount(wordMap, line);
+ Runnable worker = new LineWordCount(line);
executer.execute(worker);
}
diff --git a/src/de/fhswf/in/inf/java1/aufgabe10/WordCountTest.java b/src/de/fhswf/in/inf/java1/aufgabe10/WordCountTest.java
index 6d9b12c..b7c1a61 100644
--- a/src/de/fhswf/in/inf/java1/aufgabe10/WordCountTest.java
+++ b/src/de/fhswf/in/inf/java1/aufgabe10/WordCountTest.java
@@ -31,7 +31,7 @@ public final class WordCountTest
public static void main(String[] args)
{
File file = new File(
- "/home/aentfs/workspace/Java1/misc/Blatt9TestFile2.txt");
+ "C:/eclipse/workspace/java1/misc/Blatt9TestFile2.txt");
ParallelWordCount tmp = new ParallelWordCount();
tmp.readFile(file);