集合求并集(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
解决方案 »
- 使用debug测试时,会显示出source not found.,请指教?
- 各位,js文件中如何引入java代码?
- 关于struts 2 中datetimepicker startDate到使用问题
- Java 中如何清空 多个 JTextField ?
- 面试Opensource工程师,一道问题郁闷了,,请指点...
- Eclipse配置struts
- 紧急求助!tomcat4.06服务mssql2000数据库取image字段会这么慢?
- 谁能提供一个显示邮件内容的servlet或者javabean
- AXIS做web service,出现错误~
- 如何用weblogic中的console配置?
- 两个结构相同表的差异查询
- 如何用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()) ;
}
}
}
至于用数组嘛,我觉得遍历也许快点?但是变长的时候不是慢了?