(五)Java数据结构:数组和HashMap

虫师 创建于 7 个月 之前

最后更新时间 2018-12-17

Java的数据结构包含的数接口和类分好多种,不过,我觉得最常用的就是数组和HashMap(反正是我最常用的),所以,将他们拿出来介绍一下。

数组


数组 保存的是一组有顺序的、具有相同类型的数据。在Java的数组中,所有数据元素的数据类型都是相同的,可以通过数组的下标来访问数组。


public class JavaList {

    public static void main(String[] args) {

        String[] group = new String[5];
        group[0] = "小明";
        group[1] = "老师";
        group[2] = "老王";
        group[3] = "张三";
        group[4] = "李四";

        for (int i = 0; i < group.length; i++) {
            System.out.println(group[i]);
        }
    }
}

在创建数组的时候需要为其分配空间大小, 在本例子中, 通过循环将 0~4 之间的 5 个数放到的数组 group 中。

针对 group 进行循环时,借助 length 可计算出数组的长度。

在访问数组时,需要指定数组的下标,例:group[2] 取到的结果就是“老王”。

另外一种数组的创建方式:


String[] fruits = {"bananas", "apples", "pears", "oranges"};

实例: 冒泡排序

有一个数组,里面存放的数据是不规则的,从大小到重新排序。实现代码如下:

public class BubbleSort {

    public static void main(String[] args) {

        //排序数组
        int[] intArray = {12, 11, 45, 6, 4, 8, 43, 40, 57, 3, 22};

        System.out.println("排序前的数组:");
        for (int i = 0; i < intArray.length; i++) {
            System.out.print(intArray[i] + " ");
        }
        System.out.println();

        // 冒泡排序
        int temp;
        for (int i = 0; i < intArray.length; i++) {

            for (int j = i + 1; j < intArray.length; j++) {

                //当后一个数大于前一个,交换位置
                if (intArray[i] < intArray[j]) {
                    temp = intArray[i];
                    intArray[i] = intArray[j];
                    intArray[j] = temp;
                }
            }
        }

        System.out.println("排序后的数组:");
        for (int i = 0; i < intArray.length; i++) {
            System.out.print(intArray[i] + " ");
        }
        System.out.println();
    }
}

运行结果:

排序前的数组:
12 11 45 6 4 8 43 40 57 3 22
排序后的数组:
57 45 43 40 22 12 11 8 6 4 3

HashMap


HashMap 是一个散列表,它存储的内容是键值对(key-value)映射。 其实,我们一般叫 “字典”。

import java.util.HashMap;
import java.util.Iterator;

public class JavaHashMap {

    public static void main(String[] args) {

        //定义HashMap
        HashMap<String, String> hm = new HashMap<String, String>();
        //添加字典
        hm.put("username", "password");
        hm.put("Jim", "1155689");
        hm.put("Jane", "1255669");
        hm.put("Kevin", "1165669");

        //测试 key 是否包含 username,返回值为 true/false
        System.out.println(hm.containsKey("username"));
        System.out.println("===================>");

        //获取 key 所对应的 vlaue
        System.out.println(hm.get("Jim"));
        System.out.println("===================>");

        //获取整个字典数据
        System.out.println(hm.entrySet());
        System.out.println("===================>");

        //循环打印每一对 key:value
        Iterator<?> it = hm.entrySet().iterator();
        while (it.hasNext()) {
            System.out.println(it.next());
        }
        System.out.println("===================>");

        //分别获取 key 的值, 和 value 的值。
        Iterator<String> it2 = hm.keySet().iterator();
        while (it2.hasNext()) {
            //获得字典的 key(username)
            String username = (String) it2.next();
            System.out.println(username);
            //获得字典的 value(节点)
            String password = hm.get(username);
            System.out.println(password);
        }
    }
}

该例子中包含了 HashMap的基本操作。“字典”的定义需要引用(import)HashMap类。

在遍历字典中的每个key:value时,用到了迭代器(Iterator)。

我要留言

暂无评论