`

HashMap里插入数字一到十,然后再逐个取出来

阅读更多

初见这道题,有点奇怪,后来稍微想了一下,其实了解了HashMap的工作原理就很简单了,因为HashMap本身元素插入顺序是无序的,但是对于Hash冲突的地方是一个链表,链表的加入是放在链头的,其实是个有序的插入顺序,因此只要我们刻意去造成Hash冲突,让HashMap变成一个链表就可以了,其实很简单,只要我们把HashMap 初始化的size设置为1就可以了。

 

见下面的程序:

 

package hashmap;

import java.util.HashMap;
import java.util.Map;

/**
 *
 *<p>Test</p>
 *<p>Description:</P>
 *<p>Company:Cisco CAS</p>
 *<p>Department:CAS</p>
 *@Author: Tommy Zhou
 *@Since: 1.0
 *@Version:Date:2011-5-5
 *
 **/

public class SortedHashMapTest {
    public static void main(String[] args) {
        Map<String,String> map = new HashMap<String,String>(1);
        map.put("1", "1");
        map.put("2", "2");
        map.put("3", "3");
        Object[] objects = map.keySet().toArray();
        for (int i = objects.length-1; i >=0; i--) {
          System.out.println(objects[i]);
        }
    }
}

分享到:
评论

相关推荐

    统计所有文本文档里各种字符的个数

    我们可以为每个字符设置一个默认值0,然后在遍历文件内容时逐个增加相应的计数。 在Java代码中,我们可以先定义一个方法,接收文件路径作为参数,然后打开文件,逐行读取内容。每读取一行,就遍历这一行的所有字符...

    能有效率地排序小数字的演算法.pptx

    1. 从第二个元素开始,将每个元素与前面已排序的元素逐个比较,找到合适的位置插入。 2. 比较过程中,如果当前元素小于前一个元素,则将前一个元素后移一位,为当前元素腾出位置。 3. 重复这个过程,直到所有元素都...

    JavaScript实现不同的计算机科学算法

    - **冒泡排序**:是最简单的排序算法之一,通过重复遍历数组比较相邻元素并交换位置,直至没有任何一对数字需要交换。 - **选择排序**:每次找出未排序部分的最大(或最小)元素,放到已排序部分的末尾。 - **...

    大厂算法面试题库中高频出现的30道典型题

    2. **逐字符比较**:从头开始逐个比较两个字符串的字符,直到遇到不相同的字符或者达到其中一个字符串的末尾为止。 #### 代码示例 ```java public String longestCommonPrefix(String[] strs) { if (strs.length =...

    java基础习题及答案.doc

    插入排序的基本思想是将未排序的元素逐个插入到已排序的序列中,保持排序状态。 12. 合并两个升序数列 这是归并排序的一部分,可以使用双指针技术合并两个已排序的数组。 13. 运动员成绩排名 对成绩进行排序,...

    leetcode-answer-and-analysis(part).zip_图形图像处理_Java_

    在Java中,需要遍历链表并逐个插入新元素,保持已排序部分的有序性。 9. **Binary Tree Postorder Traversal** (二叉树的后序遍历): 后序遍历有递归和迭代两种方法。在Java中,递归方法相对简单,先遍历左子树,再...

    达内 coreJava 习题答案

    // 每次 a 的下一项都等于前一项*10,再加上刚输入时的 a ;注意,这时的 a 已经变化了。 } System.out.println("sum="+sum); } } 8、求 2/1+3/2+5/3+8/5+13/8.....前20项之和? class Sum{ public static ...

    JavaSe总结

    根据给定文件的信息,我们可以提炼出一系列关于Java SE的重要知识点,并对其进行详细解释: ### 面向对象方法的四个基本特征 面向对象编程是Java的核心理念之一,它通过以下四个特征来实现: 1. **封装**:将数据与...

    2021-2022计算机二级等级考试试题及答案No.11187.docx

    - **HashMap**:提供了一个键值对的存储方式,不保证映射关系的任何特定顺序,但允许一个键对应多个值。 - **TreeSet**:实现了SortedSet接口,用于保存有序且不可重复的元素,不适合保存映射关系。 ### 9. 关闭...

Global site tag (gtag.js) - Google Analytics