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);
- }
- }
-
- }
|
相关推荐
(1) 建立一个顺序表,含有n个数据元素。 (2) 输出顺序表及顺序表的长度。 (3) 在顺序表给定的位置i,插入一个值为x的结点。 (4) 在顺序表中删除值为x的结点或者删除给定位置i的结点。 (5) 将顺序表逆置,...
[问题描述] 当我们要在顺序表的第i个位置上插入一个元素时,必须先将顺序表中第i个元素之后的所有元素依次后移一个位置,以便腾空一个位置,再把新元素插入到该位置.若是欲删除第i个元素时,也必须把第i个元素之后的所有...
HashMap 的键允许为 null,但只能有一个这样的键;值可以有多个 null。 HashMap 是无序的,它不保证元素的任何特定顺序。 HashMap 不是线程安全的;多线程环境下,建议使用 ConcurrentHashMap,或者使用 ...
创建一个静态的顺序表存放整数。大小为10.完成以下的操作输入6个整数,1.打 印出顺序表中的内容,并显示表中剩余的空间个数。在顺序表中的第3个位置插入元素O.2.打印出顺序表中的内容,并显示表中剩余的空间个数。再...
HashMap内部使用哈希表来实现,通过将键映射到哈希表中的一个位置来快速查找和插入元素。 HashMap的主要特点是: 非线程安全:如果多个线程同时访问同一个HashMap实例,可能会导致数据不一致的问题。因此,在使用...
HashMap是一个存储key-value的键值对集合,每一个元素都是一个Entry,这些键值对分散在数组当中。 你为什么要用HashMap? 1.解决问题需要的数据结构是一种键值对的数据结构 2.HashMap是线程不安全的,其速度比较快 3....
两个有序顺序表合并成一个顺序表,还是有序的
已知有两个按元素值递增有序的顺序表A和B,设计一个算法将表A和表B的全部元素归并为一个按元素值递增有序的顺序表C。
给定进栈顺序,判断一个序列是否为正确的出栈顺序
结合矩阵分析知识,还原了实施谱聚类算法过程中的矩阵表示。发现了不同数据输入顺序使得相应的Affinity矩阵及Laplacian矩阵是相似的。这样,Laplacian矩阵的特征...由此给出了导致谱聚类算法对数据输入顺序敏感的原因。
编写一个程序,实现顺序表的各种基本运算,并在此基础上完成以下功能: 1) 初始化顺序表; 2) 依次采用尾插入法插入a,b,c,d,e元素; 3) 输出顺序表L; 4) 输出顺序表L的长度; 5) 判断顺序表L是否为空; 6) 输出顺序...
合并两个有序的顺序表,使用语言是C++,数据结构里的一个基础的算法。
定义一个包含学生信息(学号,姓名,成绩)的顺序表,使其具有如下功能: (1) 根据指定学生个数,逐个输入学生信息; (2) 逐个显示学生表中所有学生的相关信息; (3) 根据姓名进行查找,返回此学生的学号和成绩; (4...
设计一个算法采用顺序栈判断表达式中的括号是否正确配对。
(4)在La中插入一个新的元素。 (5)删除La中的某一元素。 (6)在La中查找某元素,若找到,则返回它在La中第一次出现的位置,否则返回0。 (7)打印输出La中的元素值。 2.编写程序完成下面的操作: (1)构造两个顺序...
除该类未实现同步外,其余跟Hashtable大致相同,跟TreeMap不同,该容器不保证元素顺序,根据需要该容器可能会对元素重新哈希,元素的顺序也会被重新打散,因此不同时间迭代同一个HashMap的顺序可能会不同。...
HashMap基于Map接口实现,元素以键值对的方式存储,并且允许使用null 建和null 值, 因为key不允许重复,因此只能有一个键为null,另外HashMap不能保证放入元素的顺序,它是无序的,和放入的顺序并不能相同。...
顺序表及其应用 顺序表及其应用 顺序表及其应用 顺序表及其应用 顺序表及其应用 顺序表及其应用 顺序表及其应用
学生代码作业
基础小白