首先复习toString();这个方法。

在学习toString();这个方法的时候,这个例子是最好的检验,顺便放在list中学习并记忆,toString()在Java学习-File类中有介绍,重载中的其中一个就是调用的getPath();方法

这个方法即将系统的数据,都以字符串的形式打印出来,即用字符串表示系统的任何数据。可以观察数据的运行的表达

import java.util.ArrayList;
import java.util.List;
public class Main{
    public static void main(String[] args){
        List list = new ArrayList();
        list.add(1);
        list.add(2);
        list.add(2);
        list.add(2);
        System.out.println(list);
        if(list.toString().equals("[1, 2, 2, 2]")){
            System.out.println(list.toString());
            System.out.println("True");
        }
    }
}

图片

输出的结果就是相等的,即以字符串的形式表达出来。并且当System.out.pirntln();时,默认的调用就是通过toString方法。

《------------------------------------------------------------------------------------------------------------------------》

实验六

【重要】学习任务

请自行学习ArrayList,和List两个类,撰写学习报告。

tip:菜鸟和CSDN有大量关于这两个类的学习内容,请善于利用网络学习资源,学习报告其实是你自己的学习笔记和总结

要求:这部分内容不在课堂上做讲解,但这两个类的考核要求是掌握,所以请各位同学认真学习。

学习笔记:

学习collection

首先查找资料知道ArrayList是一个List的具体实现类,

List是一个接口

List是一个有序、可以重复,可以有null元素,通过下标来索引的集合

Set 具有与 Collection 完全一样的接口,只是行为上不同,Set 不保存重复的元素。Set 接口存储一组唯一,无序的对象。

  1. Set 接口实例存储的是无序的,不重复的数据。List 接口实例存储的是有序的,可以重复的元素。
  2. Set检索效率低下,删除和插入效率高,插入和删除不会引起元素位置改变<实现类有HashSet,TreeSet>
  3. List和数组类似,可以动态增长,根据实际存储的数据的长度自动增长List的长度。查找元素效率高,插入删除效率低,因为会引起其他元素位置改变<实现类有ArrayList,LinkedList,Vector>

资料:

图片

接口:是代表集合的抽象数据类型。例如 Collection、List、Set、Map 等。之所以定义多个接口,是为了以不同的方式操作集合对象

实现(类):是集合接口的具体实现。从本质上讲,它们是可重复使用的数据结构,例如:ArrayList、LinkedList、HashSet、HashMap。

算法:是实现集合接口的对象里的方法执行的一些有用的计算,例如:搜索和排序。这些算法被称为多态,那是因为相同的方法可以在相似的接口上有着不同的实现.

Java 集合框架主要包括两种类型的容器,一种是集合(Collection),存储一个元素集合,另一种是图(Map),存储键/值对映射。Collection 接口又有 3 种子类型,List、Set 和 Queue,再下面是一些抽象类,最后是具体实现类,常用的有ArrayListLinkedListHashSet、LinkedHashSet、HashMap、LinkedHashMap 等等。

与InputStream和FileInputStream类似,ArrayList是List的具体实现类,List是一个接口也就是一个特殊的抽象类,在运用的时候需要用到具体的类,即和InputStream一样不能去生成一个实例化对象,需要用子类去实现。且List就可以通过与数组相同的方式即索引下标来查找或者是获取列表中的元素。

List list=newArrayList();

InputStream in=new FileInputStream();

在这个实例化一个对象的过程中还有一个需要注意的就是多态的运用,即生成子类的对象复制给父类的引用,就是向上转型。在有些说法中,这种赋值给父类引用的做法被称为接口化编程。使用多态可以

List是一个有序的接口(collection),因为是有序的,所以在子类对象或者是子类对象赋值给List引用中允许有重复的元素出现。

这是List的定义:

public interface List<E> extends Collection<E>

这是ArrayList类的定义:

public class ArrayList<E> extends AbstractList<E>

implements List<E>, RandomAccess, Cloneable, java.io.Serializable

ArrayList 类是一个可以动态修改的数组,与普通数组的区别就是它是没有固定大小的限制,我们可以添加或删除元素。

ArrayList 继承了 AbstractList ,并实现了 List 接口。

通常都说学习一个类或者是方法(函数)最好的办法就是看它的成员变量或者是成员函数,通过List类的定义可以看到,List作为一个接口,它继承了最顶级的接口collection,(疑问的是接口怎么继承的,不是应该是类来实现接口么?类可以继承类,接口也可以继承接口,类还可以实现接口)

需要注意的还有是

在这个继承的过程中,有很多环节,首先是ArrayLis继承了AbstractList,AbstractList又是继承了AbstractCollection,AbstractCollection实现接口List,继承AbstractCollectio,AbstractCollectio实现最高的接口Collection

public abstract class AbstractList<E> extends AbstractCollection<E> implements List<E>

public abstract class AbstractCollection<E> implements Collection<E>

用法:

明确了List和ArrayList之后,就可以尝试的去运用这些类和接口。

ArrayList 类位于 java.util 包中,使用前需要引入它,语法格式如下:

importjava.util.ArrayList;// 引入 ArrayList 类

ArrayList<E>objectName=newArrayList<>();// 初始化

**·****E**: 泛型数据类型,用于设置 objectName 的数据类型,**只能为引用数据类型**。

**·****objectName**: 对象名。

·ArrayList 是一个数组队列,提供了相关的添加、删除、修改、遍历等功能。

import java.util.ArrayList;

public class ArrayListDemo {

public static void main(String[] args) {

ArrayList<String> sites = new ArrayList<String>();

sites.add("大一");

sites.add("大二");

sites.add("大三");

sites.add("大四");

System.***out***.println(sites);

}

}

用add()方法添加元素到arraylist中,并且打印元素

有一点非常重要的是,在Java和python中list都可以存放不同类型的元素,在list中,每个元素都是一个对象,list就是一个存放对象的集合,在理解的时候就为,存放的类型就是对象类型的元素,并且可以理解的是在运用的时候就会python差不都,即在整形变量复制的时候,都是指向同一的地址,就是一个对象的各种引用的不同。

ArrayList sites = new ArrayList();

定义泛类型的格式;

ArrayList sites = new ArrayList();

《《---------------------------------------------------------------------------------------------------------------------》》

在Java中定义不去定义泛类型的list,可以存放各种不同类型的元素,即不同的对象。

ArrayList sites = new ArrayList();

这是定义格式:

ArrayList sites = new ArrayList();

多态的运用:

List sites = new ArrayList();

import java.util.ArrayList;

public class ArrayListDemo {

public static void main(String[] args) {

ArrayList sites = new ArrayList();

sites.add("大一");

sites.add("大二");

sites.add("大三");

sites.add("大四");

sites.add(123);

System.***out***.println(sites);

}

}

多态

与之前学习的装饰者模式等具体联系起来看,就可以比较容易的明白疑惑的问题在哪里

import java.util.ArrayList;

import java.util.List;

public class ArrayListDemo {

public static void main(String[] args) {

List sites = new ArrayList();

sites.add("大一");

sites.add("大二");

sites.add("大三");

sites.add("大四");

sites.add(123);

System.***out***.println(sites);

}

}



最后修改:2020 年 12 月 09 日 11 : 47 AM