ZJU-java Advanced Notes Неделя 3 (Контейнер объектов)

  1. ArrayList<String>Считывается как ArrayList из String ArrayList,
    используемого для хранения String
    Класс 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. для каждого цикла и массива объектов
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. Хеш-таблица, структура данных, все элементы представляют собой пару значений.
    Например: 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. Как пройти по хеш-таблице
for(Integer k:coinnames.keySet()){
    
    
String s = coinnames.get(k);
System.out.println(s);
}
输出
penny
half-dollar
nickel
quarter
dime

Примечание. Также необходимо передать длину хеш-таблицы.keySet().size()

рекомендация

отblog.csdn.net/weixin_44997802/article/details/108481790