📄 element.java
字号:
package gsp;
import java.util.ArrayList;
/**
* <title>元素(项目集)类</title>
* 元素信息和操作类,将项目集作为该实例的属性
* 本类封装了对于项目集的基本操作
* @author guangqingzhong
*
*/
public class Element {
private ArrayList<Integer> itemset;//表示该元素的项目,按数字的升序存放
/**
* 无参数构造方法
* 初始化项目集
*
*/
public Element() {
this.itemset=new ArrayList<Integer>();
}
/**
* 带参数构造方法
* 初始化项目集,即将参数中的项目集拷贝过来
* @param items 项目集
*/
public Element(int [] items){
this.itemset=new ArrayList<Integer>();
for(int i=0;i<items.length;i++){
// System.out.println(items[i]);
this.addItem(items[i]);
// System.out.println(this.toString());
}
}
/**
* 添加项目
* 添加项目到项目集中
* @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;
}
/**
* 比较两个元素的大小
* 将传递过来的参数o与本对象比较
* @param o 被比较的元素
* @return int -- -1 本元素小于参数 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();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -