📄 words.java
字号:
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
* Wort-Klasse.
*
* @author Kunxiang Gao
* 18.09.2007
*/
public class Words {
private String value;
/**
* Konstruktor.
* @param String value
*/
public Words(String value) {
if (value == null) {
this.value = "";
} else {
Pattern p = Pattern.compile("[\\u0020|\\t|\\n|\\f]+",
Pattern.CASE_INSENSITIVE + Pattern.UNICODE_CASE);
Matcher matcher = p.matcher(value);
if (matcher.find()) {
this.value = value;
} else if (value.matches("[a-zA-Z]+")) {
this.value = value;
} else
this.value = "";
}
}
/**
* liefert Word[] zurueck
* @return Word[]
*/
public Word[] getWords() {
if (value.matches("[\\u0020|\\t|\\n|\\f]+") || value.equals("")) {
return new Word[0];
}
String[] result;
if (value.matches("[a-zA-Z]+")) {
result = new String[] {value};
} else {
result = value.split("[\\u0020|\\t|\\n|\\f]+");
}
String temp;
int lang = result.length;
for (int i = 0; i < result.length - 1; i++) {
for (int j = 0; j < result.length - 1 - i; j++) {
if (result[j].compareTo(result[j + 1]) < 0) {
} else if (result[j].compareTo(result[j + 1]) == 0) {
result[j] = "";
lang--;
} else {
temp = result[j];
result[j] = result[j + 1];
result[j + 1] = temp;
}
}
}
ArrayList wordList = new ArrayList(result.length);
for (int i = 0; i < result.length; i++) {
wordList.add(result[i]);
}
while (wordList.get(0).equals("")) {
wordList.remove("");
}
Word[] wordBack = new Word[wordList.size()];
for (int i = 0; i < wordList.size(); i++) {
wordBack[i] = new Word((String) wordList.get(i));
}
return wordBack;
}
/**
* liefert frequenz zuturck
* @param String word
* @return int
*/
public int frequency(String word) {
int f = 0;
if (value.matches("[\u0020|\t|\n|\f]+") || value.equals("")) {
return 0;
}
String[] result = value.split("[\\u0020|\\t|\\n|\\f]+");
for (int i = 0; i < result.length; i++) {
if (word.equals(result[i])) {
f++;
}
}
return f;
}
/**
* liefert word bei frequenz
* @return Word[]
*/
public Word[] getWordsbyFreq() {
if (value.matches("[\\u0020|\\t|\\n|\\f]+") || value.equals("")) {
return new Word[0];
}
String[] result = value.split("[\\u0020|\\t|\\n|\\f]+");
String[] temp = new String[result.length];
Map map = new HashMap();
for (int i = 0; i < result.length; i++) {
int count = 0;
if (map.get(result[i]) != null)
count = ((Integer) map.get(result[i])).intValue();
map.put(result[i], new Integer(++count));
}
Word[] backWord = new Word[map.size()];
int index = 0;
for (Iterator it = map.entrySet().iterator(); it.hasNext();) {
Map.Entry entry = (Map.Entry) it.next();
String key = entry.getKey().toString();
int count = ((Integer) entry.getValue()).intValue();
backWord[index] = new Word(key);
backWord[index].setFrequency(count);
index++;
}
Word temp1;
for (int i = 0; i < backWord.length - 1; i++) {
for (int j = 0; j < backWord.length - 1 - i; j++) {
if (backWord[j].getFrequency() >= backWord[j + 1]
.getFrequency()) {
continue;
} else {
temp1 = backWord[j];
backWord[j] = backWord[j + 1];
backWord[j + 1] = temp1;
}
}
}
for (int i = 0; i < backWord.length - 1; i++) {
for (int j = 0; j < backWord.length - 1 - i; j++) {
if (backWord[j].getFrequency() == backWord[j + 1]
.getFrequency()) {
if (backWord[j].getValue().compareTo(
backWord[j + 1].getValue()) <= 0) {
continue;
} else {
temp1 = backWord[j];
backWord[j] = backWord[j + 1];
backWord[j + 1] = temp1;
}
}
}
}
return backWord;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -