我的Java学习《中国大学mooc》翁恺课程笔记(第三周)

**

对象容器

**

  1. 顺序容器
  2. 对象数组
  3. 集合容器(Set)
  4. Hash表

## 3.1 顺序容器

一般存放数据可以创建一个数组,数组是一种容器,因为数组的局限性,一旦创建无法改变其大小,我们可以使用顺序容器来解决。
引入一种顺序容器ArrayList:

package text;

import java.util.ArrayList;

public class NoteBook {
    private ArrayList<String> notes = new ArrayList<String>();
    //private int size = 0;

    public void add(String s) {
        notes.add(s);
        //size++;
    }

    public void add(String s, int location) {
        notes.add(location, s);
    }

    public int getSize() {
        return notes.size();
    }

    public String getNote(int index) {
        return notes.get(index);
    }

    public void removeNote(int index) {
        notes.remove(index);
    }

    public String[] list() {
        String[] a = new String[notes.size()];
//      for (int i = 0; i < notes.size(); i++) {
//          a[i] = notes.get(i);
//      }

        notes.toArray(a);      //与上面的for循环功能相同
        return a;       
    }

    public static void main(String[] args) {
        String[] a = new String[2];
        a[0] = "first";
        a[1] = "second";

        NoteBook nb = new NoteBook();
        nb.add("first");
        nb.add("second");
        nb.add("third", 1);
        System.out.println(nb.getSize());
        System.out.println(nb.getNote(0));
        // 会引起异常
        //System.out.println(nb.getNote(10));
        System.out.println(nb.getNote(1));
        nb.removeNote(1);
        String[] arr = nb.list();
        for (String str : arr) {      //对数组名为arr的每一个元素str
            System.out.println(str);
        }
    }
}

3.2 对象数组

对象中的每个元素都是对象的管理者而非对象本身。
当数组的元素的类型是类的时候,数组的每一个元素其实只是对象的管理者而不是对象本身。
因此,仅仅创建数组并没有创建其中的每一个对象。

集合容器(SET)
SET可以理解为数学中的集合
所有的元素都具有唯一的值,元素在其中没有顺序。

3.3 Hash表

也叫散列表,是根据关键码值(Key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。

在HashMap的双列集合中, 有K, V两个值, K是唯一的, 而V是可以重复的。多次存放value值,只会保存一个。

package date;

import java.util.HashMap;
import java.util.Scanner;

public class Coin {

    private HashMap<Integer, String> coinnames = new HashMap<Integer, String>();

    public Coin() {
        coinnames.put(1, "penny");
        coinnames.put(10, "dime");
        coinnames.put(25, "quarter");
        coinnames.put(50, "half-dollar");
        coinnames.put(50, "*");
        System.out.println(coinnames.keySet().size());
        System.out.println(coinnames);

        for (Integer k : coinnames.keySet()) {
            String s = coinnames.get(k);
            System.out.println(s);
        }
    }

    public String getName(int amount) {
        if (coinnames.containsKey(amount)) {
            return coinnames.get(amount);
        } else {
            return "NOT FOUND";
        }
    }

    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int amount = in.nextInt();
        Coin coin = new Coin();
        String name = coin.getName(amount);
        System.out.println(name);
    }

}

我的Java学习《中国大学mooc》翁恺课程笔记(第三周)我的Java学习《中国大学mooc》翁恺课程笔记(第三周) 早睡早起我最棒 发布了3 篇原创文章 · 获赞 1 · 访问量 19 私信 关注
上一篇:Linux tail 命令


下一篇:flutter学习笔记dart: 函数部分