集合求并集(java算法)描述:有这样一组集合,每个集合中都至少有一个元素(A,X)其中A是常量,X变量。合并的原则是把X相同的集合合并
且满足合并的集合的交集只有(A,X)元素。
要求:高效
如下例中集合一和集合二需要合并。结果是{(A,1),(a,2),(b,3),(c,4),(c,3),(d,4)}集合一{(A,1),(a,2),(b,3),(c,4)}
集合二{(A,1),(c,3),(d,4)}集合三{(A,2),(a,2),(c,2)}
集合四{(A,3),(c,2),(f,5),(d,7)}
...
...
集合N
且满足合并的集合的交集只有(A,X)元素。
要求:高效
如下例中集合一和集合二需要合并。结果是{(A,1),(a,2),(b,3),(c,4),(c,3),(d,4)}集合一{(A,1),(a,2),(b,3),(c,4)}
集合二{(A,1),(c,3),(d,4)}集合三{(A,2),(a,2),(c,2)}
集合四{(A,3),(c,2),(f,5),(d,7)}
...
...
集合N
解决方案 »
- jsp如何连接access远程数据库
- 求(java中)在网页中直接打开word文档的方案?
- 求一个JDBC连接Mysql一部分的代码!
- j2ee 服务器无法启动
- 为什么有时候修改了jsp页面后,如果不重启动weblogic的话,改动不会生效呢?
- 使用struts标签库:怎么把<bean:message key=""/>读出来的内容放到一个标签的属性中,如:<template:put name='title' content=(bean读出
- 用过wsad4.0的请进
- 高分请教jbuilder开发entity bean的完整示例。
- 关于java 绘图文字排版的问题
- web项目一般localhost:8080/项目名,可是spring mvc框架的项目,为什么就直接8080后面加项目里面的一些名字了?
- 两个结构相同表的差异查询
- 如何用EJB3.0实现文件上传与下载
难道用TreeSet的addAll(另外一个TreeSet)方法效率不高么?
反正set里的元素不会重复,自然就是并集了
至于高效。那要看你怎么判了,反正这么做在开发效率上应该是最高效了。
Data.javapublic class Data implements Comparable{ private String name;
private int value; public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public int getValue() {
return value;
} public void setValue(int value) {
this.value = value;
} public int compareTo(Object o) {
// TODO Auto-generated method stub
if (o instanceof Data) {
Data d = (Data) o ;
if (this.name.equals(d.name) && this.value == d.value) return 0 ;
}
return 1;
}}TestTreeSet.javaimport java.util.Iterator;
import java.util.TreeSet;
public class TestTreeSet { public static void main(String args[]) {
TreeSet t = new TreeSet() ;
init(t) ;
print(t) ;
}
public static void init(TreeSet t) {
Data d = new Data() ;
d.setName("A") ;
d.setValue(1) ;
t.add(d) ;
Data d1 = new Data() ;
d1.setName("B") ;
d1.setValue(2) ;
t.add(d1) ;
Data d2 = new Data() ;
d2.setName("A") ;
d2.setValue(1) ;
t.add(d2) ;
}
public static void print(TreeSet t) {
Iterator it = t.iterator() ;
while (it.hasNext()) {
Data d = (Data)it.next() ;
System.out.println(d.getName()) ;
System.out.println(d.getValue()) ;
}
}
}
至于用数组嘛,我觉得遍历也许快点?但是变长的时候不是慢了?