HashMap 是无序的.
这段代码是我写的一个可以间接实现有序 HashMap的代码.
写的不好 见笑了
顺便问一下,网上现在有没有更好 更高效的类似的代码?
代码
- package com.wzj;
-
- import java.util.ArrayList;
- import java.util.HashMap;
- import java.util.List;
-
-
-
-
-
-
- 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);
- }
- }
-
- }
|
相关推荐
在本项目"一个简单的Java商品管理系统"中,我们探索了一个基于Java编程语言实现的基础商品管理系统的构建过程。这个系统可能是为了教学目的而设计的,它为初学者提供了一个实际操作的平台,帮助他们理解Java的核心...
a) 对于简单的排序,如数字和英文字母,我们可以创建一个新的`Comparator`,重写`compare()`方法。在这个例子中,比较两个对象(假设它们都是`String`类型)时,使用`String.valueOf(o1).compareTo(String.valueOf...
单例模式确保一个类只有一个实例,并提供一个全局访问点。例如: ```java public class Singleton { private static Singleton instance; private Singleton() {} public static Singleton getInstance() { if...
当一个结构被赋值时,其整个内容会被复制,因此改变一个副本不会影响到原始值。这使得结构适合于小的、简单的数据类型,而类更适合于复杂的、可能需要共享的对象。 ### 2. 线程的概念与特点 线程是操作系统能够...
CAP原则是指在一个分布式系统中,Consistency(一致性)、Availability(可用性)、Partition tolerance(分区容错性)三个要素最多只能同时实现两点,不可能三者兼顾。 1. **一致性**:所有节点在同一时刻拥有同样...
5. **Clock(时钟)**:包括简单时钟和改进的CLOCK算法,它们使用一个标志位记录页面是否被访问过,通过遍历页面链表进行淘汰。CLOCK算法简单且高效,但可能会误淘汰未被修改的页面。 在Java中实现这些算法,可以...
- **同步**:程序的执行顺序与调用顺序一致,一个操作完成后才能继续下一个操作。 - **异步**:程序的执行与调用顺序分离,允许在等待某个操作完成的同时执行其他任务。 - **区别**: - 同步操作可能会导致阻塞,而...
多态允许一个接口调用不同的实现,提高代码的灵活性和扩展性。 【Servlet生命周期】 Servlet的生命周期包括加载和实例化、初始化、服务、销毁四个阶段。Servlet和CGI的主要区别在于,Servlet是基于Java的持久化...
- **详细解析**:Model1架构是一种简单的Web应用模型,在这种架构下,所有的控制器逻辑都放在一个JSP页面中,通过`<jsp:forward>`标签可以将请求转发到另一个JSP页面继续处理。 ### 知识点19:远程登录服务 - **...
HashMap则是一种基于哈希表的键值对存储结构,提供快速的插入、删除和查找操作。 接着,书中会详细探讨Collections API中的方法,如add、remove、contains、sort等,以及如何使用这些方法进行集合的创建、修改和...
以前写了一个java的正规表达式的java工具类,分享一下,有用到的欢迎下载使用。 如果你有常用的定义好的,且测试通过的正规表达式,欢迎跟贴,也让我享用一下 . 类中用到了 jakarta-oro-2.0.jar 包,请大家自己在 ...
GesturePwd项目就是实现这种功能的一个Java实现,适用于Android平台。在这个项目中,用户可以设置自己的手势密码,系统会记录并验证这个手势路径。 1. **九宫格原理** 九宫格手势密码的界面由9个点组成一个3x3的...
2. **快速排序(Quick Sort)**:快速排序采用分治策略,选取一个基准值,将数组分为小于基准值和大于基准值的两部分,分别对这两部分进行快速排序,最后合并结果。 3. **归并排序(Merge Sort)**:归并排序同样...
类的初始化 成员初始化 构造器初始化初始化顺序 数组初始化 对象的销毁 对象作用域 this 和 super 访问控制权限继承 多态组合代理 向上转型static final 接口和抽象类接口 抽象类异常 认 识 Exception 什么是 ...
9. **冒泡排序**:冒泡排序是一种简单的排序算法,通过比较相邻元素并交换位置,逐步将最大元素“冒泡”到数组末尾。 10. **线程安全**:线程安全意味着多个线程访问同一资源时,不会导致数据不一致。可采用...
- **String 类的理解:** String 类在 Java 中是不可变的对象,意味着一旦创建了一个 String 对象,它的值就不能被改变。因此,频繁修改字符串内容时使用 StringBuilder 或 StringBuffer 更为高效。 - **字符串...
HashMap允许一个null键和任意数量的null值。 - **性能**:一般情况下,HashMap比Hashtable性能更好。 ##### 九大隐式对象 - **page**:代表当前页面的范围。 - **pageContext**:表示当前页面上下文,可以访问当前...
- **`Strings=new String("xyz")`创建几个`String Object`**:创建了一个`String`对象和一个字符串字面量。 - **`Strings="a"+"b"+"c"+"d"`创建了多少个对象**:根据JDK版本的不同,可能创建1个或4个对象。 - **`...