📄 lsdmfocwrule.java
字号:
/**
*
*/
package org.solol.mmseg.internal;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import org.solol.mmseg.core.IChunk;
import org.solol.mmseg.core.IRule;
/**
* @author solo L
*
*/
public class LSDMFOCWRule implements IRule {
/* (non-Javadoc)
* @see org.solol.mmseg.core.IRule#invoke()
*/
public final IChunk[] invoke(final IChunk[] chunks) {
LSDMFOCWRuleComparator[] orderedChunks = new LSDMFOCWRuleComparator[chunks.length];
for (int i = 0; i < chunks.length; i++) {
orderedChunks[i] = new LSDMFOCWRuleComparator(chunks[i]);
}
Arrays.sort(orderedChunks);
int index = 0;
double degreeOfMorphemicFreedom = orderedChunks[index].getChunk().getDegreeOfMorphemicFreedom();
List list = new ArrayList(1);
list.add(orderedChunks[index].getChunk());
index++;
while (index < orderedChunks.length) {
if (orderedChunks[index].getChunk().getDegreeOfMorphemicFreedom() == degreeOfMorphemicFreedom) {
list.add(orderedChunks[index].getChunk());
} else {
break;
}
index++;
}
IChunk[] degreeOfMorphemicFreedomChunks = new IChunk[list.size()];
list.toArray(degreeOfMorphemicFreedomChunks);
return degreeOfMorphemicFreedomChunks;
}
static class LSDMFOCWRuleComparator implements Comparable {
private IChunk chunk;
public LSDMFOCWRuleComparator(IChunk chunk) {
this.chunk = chunk;
}
public IChunk getChunk() {
return chunk;
}
public int compareTo(Object obj) {
IChunk another = ((LSDMFOCWRuleComparator) obj).getChunk();
double temp = another.getDegreeOfMorphemicFreedom()
- chunk.getDegreeOfMorphemicFreedom();
if (temp > 0D) {
return 1;
} else if (temp < 0D) {
return -1;
} else {
return 0;
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -