arrayset.java
来自「java 实现常用数据结构(链表」· Java 代码 · 共 119 行
JAVA
119 行
/**
*
*
*
*/
package dreamer.util;
public class ArraySet<T> implements Set<T>
{
private static final int INIT_SIZE = 1024;
private static final int INCREMENT = 256;
private Object [] set;
private int size;
private int len;
public ArraySet()
{
set = new Object[INIT_SIZE];
size = INIT_SIZE;
len = 0;
}
private void extend()
{
Object [] tmpSet = new Object[size+INCREMENT];
for(int i=0;i<len;i++)
{
tmpSet[i] = set[i];
}
set = tmpSet;
}
public boolean add(T elem)
{
if(len>=size)
extend();
if(contains(elem))
return false;
set[len] = elem;
len++;
return true;
}
public boolean remove(T elem)throws IndexSlopOverException
{
if(len==0)
throw new IndexSlopOverException();
for(int i=0;i<len;i++)
{
if(set[i].equals(elem))
{
for(int j=i+1;j<len;j++)
{
set[j-1] = set[j];
}
len--;
return true;
}
}
return true;
}
public boolean set(T elem,T value)
{
if(contains(value))
return false;
for(int i=0;i<len;i++)
{
if(set[i].equals(elem))
{
set[i] = value;
return true;
}
}
return false;
}
public boolean contains(T elem)
{
for(int i=0;i<len;i++)
{
if(set[i].equals(elem))
return true;
}
return false;
}
public int size()
{
return len;
}
public Object [] toArray()
{
if(len==0)
return null;
Object [] array = new Object[len];
for(int i=0;i<len;i++)
{
array[i] = set[i];
}
return array;
}
public boolean isEmpty()
{
if(len==0)
return true;
return false;
}
public void clear()
{
set = new Object[INIT_SIZE];
size = INIT_SIZE;
len = 0;
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?