我目前正在使用SortedSet存储间隔,当我添加新间隔时,需要检查它是否与集合中的现有间隔重叠。
我现在掌握的密码是
public boolean add(Interval<K> i) {
Comparable ib = i.getB();
Comparable ia = i.getA();
for(Interval m : intervals) {
Comparable b = m.getB();
Comparable a = m.getA();
if (a.compareTo(ia) == 0 && b.compareTo(ib) == 0) {
return false; // same interval already there so don't add / return false
}
if (b.compareTo(ia) <= 0 && a.compareTo(ia) < 0) {
continue; // exists before current element
}
if (a.compareTo(ib) >= 0 && a.compareTo(ia) > 0) {
continue; // exists after
}
return false; // interval overlaps, so don't add / return false
}
intervals.add(i);
return true;
}
对于上面的代码,interval是包含所有间隔的集合,getB获取间隔的结束部分,getA获取间隔的开始部分。
虽然我正在努力提高效率,但效果很好,因为执行时间太长了。
有没有人看到任何提高效率的地方?有没有可能在不循环集合中所有间隔的情况下做到这一点?
我不确定你是否会接受,但我只是建议你用番石榴。
因为它内置了您所需的所有工具,而且正如您所期望的那样,它经过了彻底的测试:范围和
范围集。
问题内容: 我必须更新我的Doctrine实体以匹配(可能很大)XML文件中的记录。我还必须根据XML中的数据更新ManyToMany关联。这是我在循环内执行的操作: 从XML获取数据 从数据库获取实体(如果不存在,则创建新实体) 设置新实体属性 获取当前的实体关联(getter返回对象) 清除所有关联(通过调用) 设置新的关联(通过在子循环中调用) 由EntityManager保留实体 *循环
本文向大家介绍提高php编程效率技巧,包括了提高php编程效率技巧的使用技巧和注意事项,需要的朋友参考一下 用单引号代替双引号来包含字符串,这样做会更快一些。因为PHP会在双引号包围的字符串中搜寻变量,单引号则 不会,注意:只有echo能这么做,它是一种可以把多个字符串当作参数的“函数”(译注:PHP手册中说echo是语言结构,不是真正的函数,故把函数加 上了双引号)。 1、如果能将类的方
本文向大家介绍有效提高JavaScript执行效率的几点知识,包括了有效提高JavaScript执行效率的几点知识的使用技巧和注意事项,需要的朋友参考一下 为了提供新鲜、别致的用户体验,很多网站都会使用 JavaScript 来改善设计、验证表单、检查浏览器,以及Ajax请求,cookie操作等等,实现无刷新动态效果 。但是,要将大量内容在浏览器呈现,如果处理不好,网站性能将会急剧下降。所以我们有
本文向大家介绍如何利用FutureBuilder提高开发效率,包括了如何利用FutureBuilder提高开发效率的使用技巧和注意事项,需要的朋友参考一下 常见场景 展示请求按钮 用户点击按钮,显示loading 展示数据或者错误 抽象模式 展示请求按钮(初始状态) 用户点击按钮,显示loading(请求中状态) 展示数据或者错误 (结束状态(成功或失败)) 转换成程序语言 以上三种现实情况对应
公司里的vue2+webpack4项目,启动编译时间达到4分钟左右,启动完以后,改一行代码,重新编译的时间,也有达到10秒左右,我想优化一下项目,使用speed-measure-webpack-plugin这个插件,测速,启动时间暂时不管,我改了东西,重新编译,总感觉是不是有东西重复了,麻烦各位大神帮忙看看 有大神如果想看看是什么奇葩项目,启动时间这么久,也可以帮我一起看看,头大
本文向大家介绍浅谈Java中几个常用集合添加元素的效率,包括了浅谈Java中几个常用集合添加元素的效率的使用技巧和注意事项,需要的朋友参考一下 初始化需要进行比较的集合,统一增加10万个元素,获取整个过程的执行时间。 1、List集合增加元素 程序输出: List添加10万个元素程序运行时间为:8ms 2、Set集合增加元素 程序输出: Set添加10万个元素程序运行时间为:17ms 3、Link