- 浏览: 305803 次
- 性别:
- 来自: 合肥
文章分类
最新评论
-
Xiaoanemy:
我怎么就是不行Error opening zip file o ...
javarebel不用再反复重启tomcat -
fly_hyp:
lvwenwen 写道相对hessian来说有其他什么优势?应 ...
一个很牛的架构组件(Dubbo) -
lvwenwen:
相对hessian来说有其他什么优势?
一个很牛的架构组件(Dubbo) -
dj4307665:
想了解下,相对hessian来说有其他什么优势?
一个很牛的架构组件(Dubbo) -
fly_hyp:
sweat89 写道怎么解决的啊?忘了。怎么说呢?自己写的代码 ...
Spring之恶心错误记录
写了一个SortedArrayList类我觉得应该是有普遍的用途(通用类),想取一个更好一点的名字,有兴趣的帮我想想。代码无偿奉献。哈哈。
我现在的用途是存放Id,其中没有重复数据,方便查找前后关系。
/** * 其中的元素的唯一的,其中的元素是排序的(从小到大) * @author hyp * @param <E> */ public class SortedArrayList<E> implements List<E> { ArrayList<E> arr; public SortedArrayList() { arr = new ArrayList<E>(); } public SortedArrayList(int initialCapacity) { arr = new ArrayList<E>(initialCapacity); } @SuppressWarnings("unchecked") private void doAdd(E obj, int startPos, int endPos) { int dPos = endPos - startPos; if (dPos < 1) { // 初始情况 arr.add(obj); } else if (dPos == 1) { E tmpObj = arr.get(startPos); if (((Comparable) tmpObj).compareTo(obj) > 0) { arr.add(startPos, obj); } if (((Comparable) tmpObj).compareTo(obj) < 0) { arr.add(startPos + 1, obj); } } else { int midPos = (endPos + startPos) / 2; E tmpObj = arr.get(midPos); if (((Comparable) tmpObj).compareTo(obj) > 0) { doAdd(obj, startPos, midPos); } if (((Comparable) tmpObj).compareTo(obj) < 0) { doAdd(obj, midPos, endPos); } } } @SuppressWarnings("unchecked") private int doFind(E obj, int startPos, int endPos) { int dPos = endPos - startPos; if (dPos < 1) { // 初始情况 return -1; } else if (dPos == 1) { E tmpObj = arr.get(startPos); if (tmpObj.equals(obj)) { return startPos; } } else { int midPos = (endPos + startPos) / 2; E tmpObj = arr.get(midPos); if (((Comparable) tmpObj).compareTo(obj) > 0) { return doFind(obj, startPos, midPos); } else if (((Comparable) tmpObj).compareTo(obj) < 0) { return doFind(obj, midPos, endPos); } else { return midPos; } } return -1; } @Override public boolean add(E obj) { doAdd(obj, 0, arr.size()); return true; } @SuppressWarnings("unchecked") @Override public boolean remove(Object obj) { int index = doFind((E) obj, 0, arr.size()); if (index >= 0) { arr.remove(index); return true; } return false; } }
以上贴出来的是简化版本,方便浏览,附件中是完全版本。
- SortedArrayList.rar (1.2 KB)
- 下载次数: 143
评论
11 楼
keating
2009-05-05
Xorcerer 写道
好奇一下,ArrayList不是链表吗?而Object[]不是数组吗?
如果以上都肯定的话,那么为什么ArrayList内部是Object[]?扩容时怎么操作?全部复制一份?还是每次申请大片的空间,然后拼接那种。
如果以上都肯定的话,那么为什么ArrayList内部是Object[]?扩容时怎么操作?全部复制一份?还是每次申请大片的空间,然后拼接那种。
我认为啊,这个数据集结构都是数组写出来的吧。扩充时判断一下数组大小就行了。以前一本《探秘java》里看过。
10 楼
guooscar
2009-05-05
fly_hyp 写道
guooscar 写道
TreeSet 和你这个类功能一样吧?
仔细考虑了一下这个实现和TreeSet TreeMap等还是不一样,他获得子序列的算法复杂度为 O(0) 常数时间。
那还有必要写这个吗?
9 楼
fly_hyp
2009-05-05
guooscar 写道
TreeSet 和你这个类功能一样吧?
仔细考虑了一下这个实现和TreeSet TreeMap等还是不一样,他获得子序列的算法复杂度为 O(0) 常数时间。
8 楼
kimmking
2009-05-04
LinkedList才是链表。
ArrayList没有链,就是Array而已。
ArrayList没有链,就是Array而已。
7 楼
Xorcerer
2009-05-04
好奇一下,ArrayList不是链表吗?而Object[]不是数组吗?
如果以上都肯定的话,那么为什么ArrayList内部是Object[]?扩容时怎么操作?全部复制一份?还是每次申请大片的空间,然后拼接那种。
如果以上都肯定的话,那么为什么ArrayList内部是Object[]?扩容时怎么操作?全部复制一份?还是每次申请大片的空间,然后拼接那种。
6 楼
fly_hyp
2009-05-03
kimmking 写道
ArrayList<E> arr换成一个Object[]然后使用二分法可以提高效率。
Object[]是会快一点,应该是差不多的,ArrayList内部也是Object[]
5 楼
fly_hyp
2009-05-03
guooscar 写道
TreeSet 和你这个类功能一样吧?
刚刚仔细看了一遍TreeSet的功能,应该是一样的,谢谢了。不过可能性能上有少量差别
4 楼
fly_hyp
2009-05-03
aquleo 写道
说真的,我觉得这个类没有太大必要,如果真想做排序还不如直接用Collections的sort方法...
SortedArrayList是一直保持排序状态的List和调用sort方法是不一样的。
3 楼
aquleo
2009-05-02
说真的,我觉得这个类没有太大必要,如果真想做排序还不如直接用Collections的sort方法...
2 楼
guooscar
2009-05-02
TreeSet 和你这个类功能一样吧?
1 楼
kimmking
2009-05-02
ArrayList<E> arr换成一个Object[]然后使用二分法可以提高效率。
发表评论
-
为什么中文编程项目失败率特别高?
2017-06-11 10:58 424不少中文编程语言都是创造者一时热情。觉得发明很伟大,想当然的 ... -
阿里大数据架构
2014-06-26 10:16 758阿里大数据架构 -
JDI Java程序员的高级玩具
2013-12-30 10:03 1488JDI,Java程序员的高级玩 ... -
异构云操作系统需要具备的18总特性和3类支持
2013-12-24 14:07 1086什么是云操作系统? 相对于单机操作系统,网络操作系统。至少 ... -
安全云存储系统技术总结
2013-12-05 16:15 1037阅读了一下《计算机研究与发展-安全云存储系统与关键技 ... -
大型团队Java项目日志自由激活的设计
2013-11-25 13:40 853大型团队Java项目日志自由激活的设计 摘要: ... -
可以用 JavaScript 来写的应用,最终都会用 JavaScript 来写
2013-11-05 17:04 871这句话我喜欢。 凡是可以用 JavaScrip ... -
评价挺高的Java Web Profile 开源工具 Jwebap
2013-11-04 09:19 740想法很不错,作者也很努力,评价也不错。不过从历史的角 ... -
playframework 非常不错的web开发框架
2013-09-18 15:34 893playframework 非常不错的web开发 ... -
knockoutjs 非常不错的js mvc 框架
2013-09-18 15:32 697knockoutjs 非常不错的js mvc 框架 ... -
一个企业级的自动化工具gradle
2013-09-02 16:08 812还没有用过,理念不错,我喜欢。值得研究一下。 ... -
activeJDBC现在很流行的一个JDBC应用
2013-09-02 16:05 885activeJDBC现在很流行的一个JDBC应用 ... -
如何解决 emma 在 JDK7 下 java.lang.ClassFormatError 错误
2013-09-02 16:04 759JVM 启动时可以加入 “-XX:-UseSplit ... -
10 个非常重要的 HotSpot JVM 参数
2013-08-17 20:42 8231) 跟 Java 堆大小相关的 JVM 内存参数 下 ... -
A JSP to print all the stacks
2013-06-19 17:29 870A JSP to print all the stacks ... -
Ubuntu11.10下解决 jmap等jdk工具attach pid错误
2013-05-13 18:05 8471.错误案例 java] view plaincop ... -
对Emma的使用进行一些总结
2013-01-06 17:47 1007对Emma的使用进行一些总结 写道 首先将 ... -
一个很牛的架构组件(Dubbo)
2012-12-27 17:52 2714这是一个在阿里内部广泛使用的,管理SOA组件间互相调用的基本框 ... -
Open Id and Open Auth
2011-05-31 10:00 1450Open Id and Open Auth 1.a ... -
redis 初学指导
2010-06-26 23:08 1343如果你初学或者对redis很有兴趣下面的文字可能会对你有帮助 ...
相关推荐
Java将2个List集合合并到一个List里面并排序工具类 1、Java编程资源,定义了一个名为`ListMerger`的工具类,主要包含一个名为`mergeAndSortLists`的静态方法。此方法用于将两个已经根据时间顺序排列的List合并成一...
2) 用List模板定义一个List类型的模板类对象int_listC,从键盘读入n个整数,调用Push_back函数将这n个整数依次插入到该链表中;(4分) 3) 用List模板定义一个List类型的模板类对象int_listA,调用List的成员函数...
这个压缩包文件“基于java8新特性+反射机制实现list不同实体类互转.zip”提供了一种解决方案,它利用了Java 8的新特性和反射机制来实现这种转换,并将这个功能封装为一个工具类。 首先,Java 8引入了许多新特性,...
这个类通常包含一个标识符(如ID)、数据字段以及对子节点的引用(例如,一个List或另一个自定义的节点类)。 2. 创建根节点:遍历List,找到合适的元素作为树的根节点。根节点没有父节点,但可能有多个子节点。 3...
本程序没有使用类,事实上将下面的函数封装到类中可以实现一样的功能。 包含调试工程 方便起见,直接在main函数中写好这些程序。 使用了系统自带的list类。 本程序没有进行错误的捕捉与处理,例如在没有open的情况...
在Java编程中,将List集合数据导出到Excel表格是一个常见的需求,特别是在数据分析、报表生成或数据导出等场景。本实例提供了一个通用工具类,能够处理多种不同类型的对象集合,实现了最大化的通用性,使得开发者...
如果找到,则将该元素添加到一个新的列表 `list2` 中,并从原列表 `list` 中移除它。 4. **计数**:计算 `list2` 的大小并加上 1(因为还需要考虑当前元素本身),然后将其与之前记录的最大重复次数 `num` 进行比较...
4. **将Map添加到新的List中**:每当创建完一个Map后,将其添加到一个新的List集合中。 5. **返回新的List**:最终返回包含Map对象的List集合。 #### 示例代码: 假设有一个AnnouncementBean类,包含属性:actid...
本文将详细探讨如何通过一个示例代码来理解如何比较两个`List`并提取出不同的对象。 #### 核心知识点解析 1. **列表(List)的基础操作**: - `List`是一种常用的数据结构,在Java中,`List`接口是`Collection`框架...
本项目名为“C++ 读、写文件练习 包含list类实现”,主要涵盖了两个关键知识点:C++中的文件I/O操作以及C++标准库中的`std::list`容器的使用。 首先,我们来探讨C++的文件I/O操作。C++提供了丰富的流(stream)类库...
本篇文章将深入探讨如何使用Java反射来获取一个类的所有属性、方法,并处理List集合类。 首先,让我们了解Java反射的基础概念。在Java中,`java.lang.Class`类代表运行时的类信息。我们可以使用`Class.forName()`...
`ListCtrl` 是Windows API中的一个窗口类,它的官方名称是`LV_CLASS`,在MFC中,我们通常使用`CListCtrl`类来操作它。`ListCtrl`通常用于展示多列数据,并且可以支持各种视图模式,如报告视图、小图标视图、大图标...
在C#中,`List<T>`是一个非常常用的泛型集合类,它提供了动态数组的功能,可以存储任意数量的相同类型元素。当涉及到对List中的数据进行排序时,我们可以采用多种不同的策略和技术。本篇文章将详细介绍`List<T>`的...
首先,我们需要创建一个对应的Java类,该类的字段将与XML元素对应。 3. **创建Java模型类** 假设我们的XML文件具有以下结构: ```xml <name>Item1 <description>Description1 <name>Child1 ...
例如,我们可以创建一个`Node`类表示链表节点,包含数据和两个指针域,然后创建一个`LinkedList`类,包含头节点,并实现插入、删除和遍历的方法。在`test6`这个文件中,可能包含了这些类的实现代码,供学习和参考。 ...
在C++标准库中,`std::list`是一种双链表容器,它提供了一种高效的方式来存储和操作序列数据。由于`std::list`不是随机访问容器,因此它不支持像数组那样的通过索引直接访问元素(如`[]`运算符)。但是,`std::list`...
在Java编程语言中,`Collections` 类是 `java.util` 包中的一个工具类,它提供了许多静态方法,用于操作各种集合,特别是列表(List)。本文将深入探讨如何使用 `Collections` 类对 List 进行排序操作。 首先,让...
当我们谈论“list嵌套list”时,这意味着在一个列表内部包含了一个或多个列表,这样的结构可以创建出多维的数据集合。这种数据结构在处理表格数据、矩阵或树形结构时特别有用。 下面我们将详细探讨如何创建、操作和...
6. **文件08_01_webservice**:这个名字可能表示这是一个关于第八章第一节的WebService示例。这个文件可能是一个包含源代码、配置文件和其他相关资源的项目文件夹。要学习这个案例,你需要解压文件并查看其中的代码...
这个“ListCtrl控件排序类及演示程序”是针对开发者的一个资源,它提供了一种方法来实现ListView控件中数据的动态排序功能,特别适用于那些需要频繁更新和排序列表的应用。 ListCtrl控件排序类是程序中一个关键的...