?? element.java
字號:
package gsp;
import java.util.ArrayList;
/**
*
* <title>元素(項目集)類</title>
*
* 元素信息和操作類,將項目集作為該實(shí)例的屬性
*
* 本類封裝了對于項目集的基本操作
*
*/
public class Element {
private ArrayList<Integer> itemset;// 表示該元素的項目,按數(shù)字的升序存放
/**
*
* 無參數(shù)構(gòu)造方法
*
* 初始化項目集
*
*
*
*/
public Element() {
this.itemset = new ArrayList<Integer>();
}
/**
*
* 帶參數(shù)構(gòu)造方法
*
* 初始化項目集,即將參數(shù)中的項目集拷貝過來
*
* @param items
* 項目集
*
*/
public Element(int[] items) {
this.itemset = new ArrayList<Integer>();
for (int i = 0; i < items.length; i++) {
this.addItem(items[i]);
}
}
/**
*
* 添加項目
*
* 添加項目到項目集中
*
* @param item
* 被添加的項目
*
*/
public void addItem(int item) {
int i;
for (i = 0; i < itemset.size(); i++) {
if (item < itemset.get(i)) {
break;
}
}
itemset.add(i, item);
}
/**
*
* 獲得項目集
*
* @return 項目集
*
*/
public ArrayList<Integer> getItems() {
return this.itemset;
}
/**
*
* 獲取最后一個位置的項目
*
* @return 項目
*
*/
public int getLastItem() {
if (this.itemset.size() > 0) {
return itemset.get(itemset.size() - 1);
}
else {
System.err.println("空元素錯誤,Element.getLastItem()");
return 0;
}
}
/**
*
* 本方法判斷本元素是不是包含于元素e中
*
* @param e
* 元素
*
* @return true--是 false--否
*
*/
public boolean isContainIn(Element e) {
if (this.itemset.size() > e.itemset.size()) {// 如果兩個元素大小不同,則為不相等
return false;
}
int i = 0, j = 0;
while (j < e.size() && i < this.itemset.size()) {
if (this.itemset.get(i).intValue() == e.itemset.get(j).intValue()) {
i++;
j++;
} else {
j++;
}
}
if (i == this.itemset.size()) {
return true;
} else {
return false;
}
}
/**
*
* 獲取去除第一個項目外的元素
*
* @return 元素
*
*/
public Element getWithoutFistItem() {
Element e = new Element();
for (int i = 1; i < this.itemset.size(); i++) {
e.addItem(this.itemset.get(i).intValue());
}
return e;
}
/**
*
* 獲取去除最后一個項目外的元素
*
* @return 元素
*
*/
public Element getWithoutLastItem() {
Element e = new Element();
for (int i = 0; i < this.itemset.size() - 1; i++) {
e.addItem(this.itemset.get(i).intValue());
}
return e;
}
/**
*
* 刪除項目
*
* 項目位置i上的項目
*
* @param i
* 位置序號
*
* @return
*
*/
public int removeItem(int i) {
if (i < this.itemset.size()) {
return this.itemset.remove(i).intValue();
}
System.err.println("無效的索引!");
return -1;
}
/**
*
* 比較兩個元素的大小
*
* 將傳遞過來的參數(shù)o與本對象比較
*
* @param o
* 被比較的元素
*
* @return int -- -1 本元素小于參數(shù) 1 本元素大于參速
*
*/
public int compareTo(Object o) {
Element e = (Element) o;
int r = 0;
int i = 0, j = 0;
while (i < this.itemset.size() && j < e.itemset.size()) {
if (this.itemset.get(i).intValue() < e.itemset.get(j).intValue()) {
r = -1;// 本element小于e
break;
} else {
if (this.itemset.get(i).intValue() > e.itemset.get(j)
.intValue()) {
r = 1;// 本element大于e
break;
}
}
i++;
j++;// 項目相同,都指向下一個項目
}
if (r == 0) {// 如果目前還沒有比較出誰大誰小的話
if (this.itemset.size() > e.itemset.size()) {
r = 1;
}
if (this.itemset.size() < e.itemset.size()) {
r = -1;
}
}
return r;
}
/**
*
* 獲取項目集的大小
*
* @return int--大小
*
*/
public int size() {
return this.itemset.size();
}
/**
*
* 元素拷貝方法
*
* 拷貝項目集
*
*/
public Element clone() {
Element clone = new Element();
for (int i : this.itemset) {
clone.addItem(i);
}
return clone;
}
/**
*
* 下判斷兩個元素是否相同
*
* @param o
*
* @return true--相同 false--不同
*
*/
public boolean equalsTo(Object o) {
boolean equal = true;
Element e = (Element) o;
if (this.itemset.size() != e.itemset.size()) {// 如果兩個元素大小不同,則為不相等
equal = false;
}
for (int i = 0; equal && i < this.itemset.size(); i++) {
if (this.itemset.get(i).intValue() != e.itemset.get(i).intValue()) {
equal = false;
}
}
return equal;
}
/**
*
* 重寫toString()
*
* 用于輸出時的字符處理
*
*/
public String toString() {
StringBuffer s = new StringBuffer();
if (this.itemset.size() > 1) {
s.append("(");
}
for (int i = 0; i < this.itemset.size(); i++) {
s.append(this.itemset.get(i).intValue());
if (i < this.itemset.size() - 1) {
s.append(",");
}
}
if (this.itemset.size() > 1) {
s.append(")");
}
return s.toString();
}
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -