`
抛出异常的爱
  • 浏览: 628193 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

集合合并

阅读更多
用于时间表的合并
时间段的合并工作.
public class StarEnds  {
	LinkedList<StarEnd> qeuqeu = new LinkedList<StarEnd>();
	public StarEnds add(StarEnd other) {
		Iterator<StarEnd> it = qeuqeu.iterator();
		while(it.hasNext()){
			StarEnd temp = it.next();
			if(StarEnd.isMix(temp, other)){
				other.inputOther(temp);
				it.remove();
			}
		}
		qeuqeu.add(other);
		return this;
	}	
	public Iterator<StarEnd> iterator(){
		return qeuqeu.iterator();
	}
	 

	public static void main(String[] args) {
		StarEnds ses = new StarEnds();
		int[] arr = {1,2,4,5};
		for(int i : arr){
			StarEnd temp = new StarEnd();
			temp.star=i;
			temp.end =i+1;
			ses.add(temp);
		}
		System.out.println(ses.qeuqeu);
	}


}
 class StarEnd{
	int star=0; 
	int end=0;
	@Override
	public String toString() {
		return "{"+star+":"+end+"}";
	}
	public void inputOther(StarEnd other){
		    List<Integer> l = Arrays.asList(star,end,other.star,other.end);
			star =  Collections.min(l);
			end =   Collections.max(l);
			other.star = 0;
			other.end = 0;
	
	}
	public static boolean isMix(StarEnd one, StarEnd other) {
		if(one==null||other==null){
			return false;
		}
		return one.inStarEnd(other.star)||one.inStarEnd(other.end) ;
	}
	public boolean inStarEnd(int in){
		return (in >= star && in<= end);
	}
}
分享到:
评论
1 楼 weiqiang.yang 2010-11-12  
这里的start应该是小于end的吧
 List<Integer> l = Arrays.asList(star,end,other.star,other.end);  
            star =  Collections.min(l);  
            end =   Collections.max(l);  

这里可以直接比较star 和 other.star得到最小,end 和other.end得到最大,也许可以减少几次比较:D

如果start不一定小于end,那么isMix方法判断貌似就不全面了

相关推荐

    Java将2个List集合合并到一个List里面并排序工具类

    Java将2个List集合合并到一个List里面并排序工具类 1、Java编程资源,定义了一个名为`ListMerger`的工具类,主要包含一个名为`mergeAndSortLists`的静态方法。此方法用于将两个已经根据时间顺序排列的List合并成一...

    集合合并代码

    System.out.println("合并前值:&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;"+lst.size()); printLst(lst); // UserBean bbb=null; for(int i=0;i();i++) { UserBean b=(UserBean)lst.get(i); String s=b....

    集合的并交差,集合合并,删除,判断子集,求补集

    集合运算是集合操作的基础,包括集合的并交差、集合合并、删除、判断子集、求补集等操作。在本文中,我们将详细介绍集合运算的实现方法,并提供相应的代码实现。 1. 集合的定义 在C语言中,我们可以使用结构体来...

    C语言工程实践I (数组与链表的集合合并、有序表合并)

    C语言程序设计课程的第一次工程实践,文件中各个函数严格按照老师所给函数...文件中有四份代码,分别是集合合并(数组、链表),有序表合并(数组、链表)。集合合并中会自动将重复元素删除,有序表合并后仍是有序表。

    链表集合合并.cpp

    链表集合合并.cpp

    工程实践 第一部分 题目一 求两个集合的合并运算 题目二 求两个有序表合并算法.zip

    这些练习旨在帮助学生掌握集合合并运算以及两个有序表的高效合并方法。成都信息工程大学的学生们可以通过完成这些题目来提升他们的编程能力和算法理解。 题目一:求两个集合的合并运算 在计算机科学中,集合是存储...

    集合合并与查找-并查集

    并查集是一种数据结构,主要用于处理一些不相交集合的合并及查询问题。它支持三种基本的操作: 1. **Make-set(a)**:创建一个新的集合,其中只包含元素`a`。 2. **Union(X, Y)**:合并两个集合`X`和`Y`。 3. **Find...

    fd.rar_bernstein polynomial_bezier_character bezier_线段合并_线段集合合并

    同时指出待细化字符图像是线段区域的集合的基础上,首先基于图像行(列)连通像素段来提取字符图像中所有的交点区域和子段区域,然后对属于同一线段区域的所有子段区域和交点区域进行合并,最后用Bernstein-Bezier多项式...

    java中两个byte数组实现合并的示例

    在Java编程语言中,有时我们需要将两个或多个字节数组(`byte`数组)合并成一个新的单一数组。这种情况在处理二进制数据、文件读写或者与硬件交互时尤其常见。本文将深入探讨如何在Java中实现两个`byte`数组的合并,...

    集合嵌套集合并用迭代器输出,有关keySet()和entrySet()的练习

    本练习主要关注集合的嵌套合并以及如何通过迭代器来输出数据。我们将深入探讨`keySet()`和`entrySet()`这两个重要的集合接口方法,它们在处理Map容器时尤其关键。 `keySet()`方法返回一个Set视图,包含了Map中的...

    数据结构课程设计—集合运算

    并运算函数是指将两个集合合并成一个新的集合。并运算函数可以使用链表来实现,链表能够高效地存储和处理大量数据。 知识点八:交运算函数 交运算函数是指求两个集合的交集。交运算函数可以使用链表来实现,链表...

    JS合并两个数组的3种方法详解

    这篇文章主要介绍了JS合并两个数组的3种方法详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 需要将两个数组合并成为一个的情况。比如: var a = [1,2,3];...

    最优合并问题(C++描述)

    最优合并问题的基本思想是将一系列数据集合合并成尽可能少的大集合,每个大集合内部的元素顺序必须保持原样。例如,假设我们有多个已排序的小数组,我们需要找到一种合并方式,使得合并后的数组数量最少。这是一个...

    splice:将记录的有序集合合并到Strata b树中

    "splice:将记录的有序集合合并到Strata b树中" 这个标题涉及的是一个JavaScript库或工具,用于高效地处理数据结构,特别是优化在大数据集中的操作。Strata B树(Strata Balanced Tree)是一种自平衡的树数据结构,它...

    java集合框架的使用。集合的运算

    4. 集合的并集:通过使用addAll()方法,可以将两个集合合并成一个新的集合,这就是并集: ```java Set&lt;String&gt; set1 = new HashSet(Arrays.asList("A", "B")); Set&lt;String&gt; set2 = new HashSet(Arrays.asList("B", ...

    用树根来标识一个集合

    合并操作(Union)将两个不相交的集合合并为一个集合,通常通过路径压缩或按秩合并等优化策略来提高效率。查询操作(Find)则确定两个元素是否属于同一集合,通过查找它们的根节点是否相同来实现。 三对角线方程组...

    anzhihebing.rar_anzhi合并_按秩合并原理

    它主要用于解决“连通性”问题,例如判断两个元素是否属于同一集合,或者将两个集合合并。在本压缩包文件“anzhihebing.rar”中,包含了一个名为“anzhihebing.cpp”的C++源代码文件,该文件实现了并查集的两种重要...

    将几个集合中相同元素合并

    该Java程序的主要目的是处理字符串集合,具体来说是将具有相同字符的字符串进行合并,最终得到一个包含无交集字符串的集合。 #### 二、核心概念解释 1. **集合**:在计算机科学中,集合是一种数据结构,用于存储不...

    文本文件合并软件

    这样的工具在处理大量分散的文本数据时非常有用,例如日志分析、文档整理或代码集合合并。在描述中提到的“小”,可能意味着这款软件体积小巧,易于下载和安装,不会占用大量系统资源。 1. **合并操作的基本概念**...

    集合的并、交和差运算的算法.docx

    * 集合合并:State Union_List(li a,li b,List c),用于将两个集合合并 * 集合交集:State Intersection_List(li a,li b,List c),用于求两个集合的交集 * 集合差集:State Substract_List(li a,li b,List c),用于...

Global site tag (gtag.js) - Google Analytics