ZJU-java进阶笔记 第三周(对象容器)

  1. ArrayList<String> 读作 ArrayList of String
    用来存放String的ArrayList
    ArrayList类属于范型类,是种容器
    ArrayList<String>类属于容器类,用来存放对象,由容器类型和元素类型构成
    知道容器类的一些内置用法,省很多事

  2. 对象数组中的每个元素都是对象的管理者而非对象本身
    在这里插入图片描述

仅仅创建数组并没有创建其中的每一个对象

int[] ia = new int[10];
String[] a = new String[10];
System.out.println(ia[0]);
System.out.println(a[0]);

输出
0
null

  1. for each循环和对象数组
class Value{
    
    
    private int i;
    public void set(int i){
    
    this.i = i;}
    public int get(){
    
    return i;}
}


Value[] a = new Value[10];
        for(int i=0;i<a.length;i++){
    
    
            a[i]=new Value();
            a[i].set(i);
        }
        for (Value v: a){
    
    
            System.out.println(v.get());
            v.set(0);
        }
        for (Value v: a){
    
    
            System.out.println(v.get());
        }

输出 0123456789 0000000000
  1. 用容器类替代对象数组可以吗
ArrayList<String> a = new ArrayList<String>();
        a.add("first");
        a.add("second");
        for(String s:a){
    
    
            System.out.println(s);
        }
}
输出 first second 

完全可以

  1. ArrayList是顺序容器,元素有顺序,可重复
    HashSet是集合容器,元素无顺序,不重复
		ArrayList<String> a = new ArrayList<String>();
        a.add("first");
        a.add("second");
        a.add("first");
        System.out.println(a);
        HashSet<String> b = new HashSet<String>();
        b.add("first");
        b.add("second");
        b.add("first");
        System.out.println(b);
输出
[first, second, first]
[first, second]
  1. 会被主动调用的toString()函数
class Value{
    
    
private int i;
public void set(int i){
    
    this.i = i;}
public int get(){
    
    return i;}
}
main函数里
Value v =new Value();
v.set(10);
System.out.println(v);
输出
notebook.Value@1b6d3586

如果在Value类里面加上

public String toString(){
    
    return ""+i;}
则输出
10

arraylist和hashset可以直接输出,说明内部都实现了toString函数

  1. Hash表,一种数据结构,所有元素都是一对值
    例:HashMap<Integer,String>
    为什么int不行:这是一个面向对象的世界
    一个包裹类型的变量(Integer)可以直接接受它所对应的基础类型(int)的变量
例
类里
public HashMap<Integer,String> coinnames = new HashMap<Integer,String>();
构造函数里
System.out.println(coinnames);
输出
{
    
    1=penny, 50=half-dollar, 5=nickel, 25=quarter, 10=dime}
  1. 如何遍历Hash表
for(Integer k:coinnames.keySet()){
    
    
String s = coinnames.get(k);
System.out.println(s);
}
输出
penny
half-dollar
nickel
quarter
dime

注:得到Hash表的长度也需要通过keySet().size()

猜你喜欢

转载自blog.csdn.net/weixin_44997802/article/details/108481790