- 浏览: 2610120 次
- 性别:
- 来自: 小胖儿的大城
文章分类
最新评论
-
ni4wangba0:
ni4wangba0 写道亲测,算法有问题。对不起,其实是我自 ...
谈谈"求线段交点"的几种算法(js实现,完整版) -
ni4wangba0:
亲测,算法有问题。
谈谈"求线段交点"的几种算法(js实现,完整版) -
kers007:
苹果不让Webapp 在appstore 里发布,我不知道对 ...
苹果真的要在 AppStore 里封杀 WebApp 吗? -
striveandlive:
fins = js大牛
[原创]GT-Template, 一个超轻量级的js模板工具. -
AlwaysYang:
基础扎实的才能行走天下。
关于body的"大小"在ie和ff下的一些基础知识
HashMap 是无序的.
这段代码是我写的一个可以间接实现有序 HashMap的代码.
写的不好 见笑了
顺便问一下,网上现在有没有更好 更高效的类似的代码?
hehe, API说明不详,有些误导。
实现上提出一个小建议。
可以不用继承,用包含。使用proxy pattern。
这样就可以对任意 Map 进行截获处理,而不只是 HashMap。
先来一个通用的ProxyMap。如果不需要重用,这个类可以不用写。主要为了展示Proxy,delegate。
--------------------------------
IndexMap 继承 ProxyMap。
如果没有ProxyMap这个类,那么就不用继承。
需要自己实现所有Map的delegate方法。
IndexMap的代码几乎和 fins 给出的一样(就是copy过来的)。
只是可以截获所有的Map。而不只是HashMap。
TreeMap class implements SortedMap interface.
这段代码是我写的一个可以间接实现有序 HashMap的代码.
写的不好 见笑了
顺便问一下,网上现在有没有更好 更高效的类似的代码?
package com.wzj; import java.util.ArrayList; import java.util.HashMap; import java.util.List; /** * @author fins build 2006-07-18 * 顺序敏感的HashMap * get(int idx)/remove(int idx) 为按加入hashMap的顺序号(index) 来取得/删除 数据 */ public class IndexHashMap extends HashMap { private static final long serialVersionUID = 1L; private List list=new ArrayList(); public Object put(Object key, Object value) { if (!containsKey(key)){ list.add(key); } return super.put(key, value); } public Object get(int idx){ return super.get(getKey(idx)); } public int getIndex(Object key){ return list.indexOf(key); } public Object getKey(int idx){ if (idx>=list.size()) return null; return list.get(idx); } public void remove(int idx){ Object key=getKey(idx); removeFromList(getIndex(key)); super.remove(key); } public Object remove(Object key) { removeFromList(getIndex(key)); return super.remove(key); } public void clear() { this.list = new ArrayList(); super.clear(); } private void removeFromList(int idx){ if (idx<list.size() && idx>=0) { list.remove(idx); } } }
评论
6 楼
fins
2006-11-03
楼上的 看完帖子再发言啊
LinkedHashMap 也是不能随机存取的啊
LinkedHashMap 也是不能随机存取的啊
5 楼
Feiing
2006-11-02
晕, 没用过 java.util.LinkedHashMap ?
4 楼
fins
2006-11-02
哈哈 我咋就没想到呢
高手!谢谢 buaawhl
学习!
高手!谢谢 buaawhl
学习!
3 楼
buaawhl
2006-11-02
hehe, API说明不详,有些误导。
实现上提出一个小建议。
可以不用继承,用包含。使用proxy pattern。
这样就可以对任意 Map 进行截获处理,而不只是 HashMap。
先来一个通用的ProxyMap。如果不需要重用,这个类可以不用写。主要为了展示Proxy,delegate。
public class ProxyMap { protected Map map; public ProxyMap(Map map) { super(); this.map = map; } public Map getMap() { return map; } public void clear() { map.clear(); } public boolean containsKey(Object key) { return map.containsKey(key); } public boolean containsValue(Object value) { return map.containsValue(value); } public Set entrySet() { return map.entrySet(); } public boolean equals(Object o) { return map.equals(o); } public Object get(Object key) { return map.get(key); } public int hashCode() { return map.hashCode(); } public boolean isEmpty() { return map.isEmpty(); } public Set keySet() { return map.keySet(); } public Object put(Object arg0, Object arg1) { return map.put(arg0, arg1); } public void putAll(Map arg0) { map.putAll(arg0); } public Object remove(Object key) { return map.remove(key); } public int size() { return map.size(); } public Collection values() { return map.values(); } }
--------------------------------
IndexMap 继承 ProxyMap。
如果没有ProxyMap这个类,那么就不用继承。
需要自己实现所有Map的delegate方法。
IndexMap的代码几乎和 fins 给出的一样(就是copy过来的)。
只是可以截获所有的Map。而不只是HashMap。
import java.util.ArrayList; import java.util.List; import java.util.Map; public class IndexMap extends ProxyMap{ public IndexMap(Map map) { super(map); } private List list = new ArrayList(); public Object put(Object key, Object value) { if (!containsKey(key)){ list.add(key); } return super.put(key, value); } public Object get(int idx){ return super.get(getKey(idx)); } public int getIndex(Object key){ return list.indexOf(key); } public Object getKey(int idx){ if (idx>=list.size()) return null; return list.get(idx); } public void remove(int idx){ Object key=getKey(idx); removeFromList(getIndex(key)); super.remove(key); } public Object remove(Object key) { removeFromList(getIndex(key)); return super.remove(key); } public void clear() { this.list = new ArrayList(); super.clear(); } private void removeFromList(int idx){ if (idx<list.size() && idx>=0) { list.remove(idx); } } }
2 楼
fins
2006-11-02
这个我知道 但是用法和我写的这个不太一样
你仔细看看
TreeMap和我需要的效果不一样
从treeMap里 不能随机取数据
只有在遍历的时候才能按顺序取
例如 我想取 treemap里 第5个加入的数据
你仔细看看
TreeMap和我需要的效果不一样
从treeMap里 不能随机取数据
只有在遍历的时候才能按顺序取
例如 我想取 treemap里 第5个加入的数据
1 楼
buaawhl
2006-11-02
TreeMap class implements SortedMap interface.
发表评论
-
一个商业公司如果要支持一个开源项目的话,它需要做哪些工作啊?
2009-12-07 16:55 4953一个商业公司如果要支持一个开源项目的话,它需要做哪些工作呢? ... -
如何让jxl (jexcelapi) 支持更多的数据
2009-01-08 23:52 4517jxl (jexcelapi) 一直是我比较喜欢的 java版 ... -
在java中"模拟" XMLHttpRequest
2008-11-03 12:17 13095这里所说的"模拟" 是指 : 在java中 ... -
利用google docs进行"轻量级过程管理".
2008-08-28 13:21 0利用google docs进行" ... -
[请教]jxl生成xls时,支持"合并"或"磁盘缓存"吗(导出大数据量时)
2008-07-28 09:37 6940jxl 由于其小巧 易用的特点, 逐渐已经取代了 POI-ex ... -
不错的国产开源免费的php框架: FleaPHP
2008-07-28 01:58 8518之前用他开发过一个小的网站 开发过程非常轻松愉快 体验也很好 ... -
GT-FrontController, 一个简陋的MVC控制器的设计思路
2008-07-06 23:53 2730在给GT-Grid做前后台结合的例子时, 为了"快速 ... -
h2database 普及系列一: 简介
2008-05-06 19:10 22118这不是一个新东西,但是 ... -
JSF 与 "我的伟大发明" ---- 关于B/S UI开发的胡言乱语
2008-04-10 14:25 14467这篇帖子后面的回复和 ... -
初看JSF后的胡言乱语
2008-04-10 09:31 4583最近看了一点jsf ---- 只 ... -
Help,如何在J2EE环境下使用Sqlite以及如何将sqlite打入war包
2008-03-27 09:46 3785需求是这样的 希望j2ee应用(基于应用 而不是整个服务器) ... -
请记住: i AM SoLiD. (关于View的事件触发顺序)
2007-11-16 04:11 2627View 提供了若干事件. 在渲染 布局 展现 相关事件的触 ... -
Android SDK下, 如何在程序中输出日志 以及如何查看日志.
2007-11-15 22:38 9845Android SDK下, 如何在程序中输出日志 以及如何查看 ... -
小胖加入Android Fans的 大军了 呵呵
2007-11-15 13:30 3136决定开始研究 Android 了. 以前研究过 j2me 对 ... -
老帖: findbugs简介
2007-11-02 10:09 3567这个时候说 findbugs ??? ... -
世上没有B/S系统,只有B系统和S系统.
2007-09-12 13:45 34342先说些与标题貌似无关的话. 随着prototype DWR ... -
[求助]有没有哪个缓存组件支持 基于访问频率的清理策略
2007-08-29 18:30 2404目前缓存清理策略几乎都是基于 存活期 和 活跃期 还有缓存队列 ... -
[发布2007-08-06]Ajax向导组件 WebWizard Component Beta1
2007-08-06 15:55 4995/****************************** ... -
寻求一个eclipse下更好的snippet插件(或代码模板管理插件 或代码生成器)
2007-07-26 11:12 4258eclipse自带一个snippet插件,但是功能有限. 只支 ... -
让Struts 1焕发青春----小议对Struts的改造.
2007-06-25 15:27 7597目前流行的新型的MVC框架 几乎都在"增强单元测试能 ...
相关推荐
Java集合框架是Java编程语言中一个至关重要的部分,它提供了数据结构和算法的抽象,使得开发者可以方便地存储和管理各种类型的数据。本篇将详细探讨Java集合框架中常见的面试题,包括List、Set、Map三者的区别以及...
Java集合框架是Java编程中非常重要的一个组成部分,它提供了存储和操作对象的高效方式。面试中,关于Java集合框架的问题经常出现,特别是对于List、Set、Map三大接口的理解及其实现类的特性。以下是对这些知识点的...
Java集合框架是Java编程语言中一个非常重要的概念,它提供了一种高效且灵活的方式来存储和管理数据。在Java面试中,对于集合的理解和熟练运用通常是评估候选人能力的关键部分。以下是一些关于Java集合框架的核心知识...
- **Null支持**:HashMap允许一个key为null,可以有多个null值,而HashTable不支持null键值对,尝试put null会抛出NullPointerException。 - **初始容量与扩容**:HashMap默认初始容量为16,而Hashtable默认11,扩...
11. **类和接口的限制**: 一个 .java 文件可以包含多个类,但只能有一个公共类(主类),且主类名应与文件名相同。内部类可以在一个类内部定义。 12. **JVM 内存模型**: JVM 分为堆内存、栈内存、方法区(JDK 1.8 ...
- Overload(重载):在同一个类中,方法名相同但参数列表不同(参数数量、类型或顺序不同)。 - Override(重写):子类方法与父类方法同名、同参数列表,子类方法覆盖父类方法。 16. **Set中元素的判断**:在...
创建Map对象时,通常会指定一个具体的实现类,如HashMap。例如: ```java Map, String> map = new HashMap(); ``` 这里创建了一个HashMap实例,其中键和值都是字符串类型。 2. **插入元素** 使用`put()`方法...
以前写了一个java的正规表达式的java工具类,分享一下,有用到的欢迎下载使用。 如果你有常用的定义好的,且测试通过的正规表达式,欢迎跟贴,也让我享用一下 . 类中用到了 jakarta-oro-2.0.jar 包,请大家自己在 ...
在Java中,如果一个类继承了另一个类,那么执行顺序遵循以下规则: 1. 先执行父类的构造函数。 2. 然后执行子类构造函数。 #### 12. 内部类的实现方式? 内部类可以分为匿名内部类、局部内部类、静态内部类等。 ##...
- 创建`String s = new String("xyz")`会创建两个对象,一个是常量池中的"xyz",另一个是堆中的新对象。 10. **Math.round()** - `Math.round(11.5)`等于12,`Math.round(-11.5)`等于-11。 11. **short变量自增...
1.6.3. 输入一个整数数组,调整数组中数字的顺序,使得所有奇数位于数组的前半部分,所有偶数 位于数组的后半部分 ...........................................................130 1.6.4. 给定链表的头指针和一个...