📄 seggraph.java
字号:
package com.gftech.ictclas4j.segment;
import java.util.ArrayList;
import com.gftech.ictclas4j.bean.SegNode;
import com.gftech.ictclas4j.utility.Utility;
/**
* 分词图表,即二维表
*
* @author sinboy
* @since 2006.6
*
*/
public class SegGraph {
private boolean isRowFirst;// 是否按行优先
private ArrayList<SegNode> snList;// 分词图表实际是用链表来表示
public SegGraph(){
}
public SegGraph(ArrayList<SegNode> snList){
this.snList=snList;
}
public SegNode getElement(int row, int col) {
SegNode result = new SegNode();
result.setValue(Utility.INFINITE_VALUE);
result.setPos(0);
// if (row > m_nRow || col > m_nCol)
// return null;
int index = 0;
if (snList != null) {
if (isRowFirst) {
for (int i = 0; i < snList.size(); i++, index++) {
SegNode sg = snList.get(i);
if (row != -1 && sg.getRow() < row || col != -1 && sg.getRow() == row && sg.getCol() < col)
continue;
else
break;
}
} else {
for (int i = 0; i < snList.size(); i++, index++) {
SegNode sg = snList.get(i);
if (col != -1 && sg.getCol() < col || row != -1 && sg.getCol() == row && sg.getRow() < row)
continue;
else
break;
}
}
// Find it and return the value
if (index < snList.size()) {
SegNode sg = snList.get(index);
if ((sg.getRow() == row || row == -1) && (sg.getCol() == col || col == -1))
result = sg;
}
}
return result;
}
/**
* 设置元素.如果能在图表中找到,重新设值.否则添加进去.
*
* @param sg
* @return
*/
public boolean setElement(SegNode sg) {
if (sg != null) {
if (snList == null)
snList = new ArrayList<SegNode>();
int i = 0;
SegNode sgTemp = null;
if (isRowFirst) {
for (i = 0; i < snList.size(); i++) {
sgTemp = snList.get(i);
if (sgTemp.getRow() < sg.getRow() || sgTemp.getRow() == sg.getRow()
&& sgTemp.getCol() < sg.getCol())
continue;
else
break;
}
} else {
for (i = 0; i < snList.size(); i++) {
sgTemp = snList.get(i);
if (sgTemp.getCol() < sg.getCol() || sgTemp.getCol() == sg.getCol()
&& sgTemp.getRow() < sg.getRow())
continue;
else
break;
}
}
if (sgTemp != null && sgTemp.getRow() == sg.getRow() && sgTemp.getCol() == sg.getCol())
sgTemp = sg;
else if (i > 0)
snList.add(i - 1, sg);
}
return false;
}
/**
* 得到所有列值为Col的元素
*
* @param curIndex
* 当前索引值,表示列值或行值
* @param isColFirst
* 是否按列优先进行遍历
* @return
*/
public ArrayList<SegNode> getNodes(int curIndex, boolean isColFirst) {
ArrayList<SegNode> result = null;
if (snList != null && snList.size() > 0 && curIndex >= 0) {
result = new ArrayList<SegNode>();
for (int i = 0; i < snList.size(); i++) {
SegNode sg = snList.get(i);
if (isColFirst) {
if (sg.getCol() == curIndex)
result.add(sg);
} else {
if (sg.getRow() == curIndex)
result.add(sg);
}
}
}
return result;
}
public boolean isRowFirst() {
return isRowFirst;
}
public void setRowFirst(boolean isRowFirst) {
this.isRowFirst = isRowFirst;
}
public ArrayList<SegNode> getSnList() {
return snList;
}
public void setSnList(ArrayList<SegNode> sgs) {
this.snList = sgs;
}
public int getSize(){
if(snList!=null)
return snList.size();
else
return -1;
}
public int getMaxRow(){
int result=-1;
if(snList!=null && snList.size()>0){
int size=snList.size();
SegNode sn=snList.get(size-1);
result=sn.getRow();
}
return result;
}
public int getMaxCol(){
int result=-1;
if(snList!=null && snList.size()>0){
int size=snList.size();
SegNode sn=snList.get(size-1);
result=sn.getCol();
}
return result;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -