需要查找基本操作集并集/交集/对称差分JAVA
需要完成此实现才能使用UseSet类。不确定我所实现的是否100%正确
但是我需要工会和SysDiff的帮助
public class Set
{
private ArrayList<Integer> elements;
public Set()
{
elements = null;
}
public Set(ArrayList<Integer> s)
{
int i;
elements = new ArrayList<Integer>();
for(i=0; i<s.size(); i++)
elements.add(s.get(i));
}
public Set(int[] s)
{
int i;
elements = new ArrayList<Integer>();
for(i=0; i<s.length; i++)
elements.add(s[i]);
}
public String toString()
{
//implement this method
}
public boolean isElement(int elt)
{
int i
for (i=0; i < elements.size(); i++)
{
if (elements.get(i) == elt)
return true;
}
return false
}
public int cardinality()
{
return elements.size();
}
public Set intersect(Set s)
{
Array list <interger> iset = new Array(ist<interger>();
int i;
for (i=0; i<elements.size(); i++)
{
if (s2.isElement (elements.get(i)))
iSet.add(elements.get(i)));
}
return new set(iset)
}
public Set union(Set s)
{
//implement this method
}
public Set symDiff(Set s)
{
//implement this method
}
# 1 楼答案
Java有它的基本实现。有关更多功能,请尝试Apache Commons库:
Commons Collections试图通过提供新的接口、实现和实用程序来构建JDK类。有很多功能,包括
http://commons.apache.org/collections/
CollectionUtils类对您的任务特别有用(例如,addAll:
http://commons.apache.org/collections/api-release/org/apache/commons/collections/CollectionUtils.html#addAll(java.util.Collection,%20java.util.Enumeration)
您可以在这里看到实施和想法:
http://svn.apache.org/viewvc/commons/proper/collections/trunk/src/java/org/apache/commons/collections/CollectionUtils.java?view=markup
# 2 楼答案
您是否考虑过使用Java提供的类之一,例如TreeSet?使用这样的类作为起点,可以更容易地实现大多数基本的集合操作
例如:
在Set/TreeSet
cardinality()
是size()
intersect
可以使用retainAll()
union()
可以使用addAll()
symDiff()
可以使用removeAll()
从两个集合的并集中删除相交元素# 3 楼答案
请参阅有关使用java set接口执行数学集合操作的Oracle文档:
http://download.oracle.com/javase/tutorial/collections/interfaces/set.html
你可以轻松地进行联合和交叉