集合框架----ArrayList

引子:我们先来看看传统数组的用法

  1. 写一个Hero对象类

    package cn.jse.t1;

    public class Hero {

    public String name;

    public float hp;

    public int damage;

    public Hero(){}

    //增加一个初始化name的构造方法

    public Hero(String name){

    this.name=name;

    }

    //重写一个toString 方法

    public String toString(){

    return name;

    }

    }

  2. 写一个测试类

    package cn.jse.t1;

    public class TestCollection {

    public static void main(String[] args) {

    //数组的局限性

    Hero hero[] = new Hero[10];

    //分析:声明了长度为10的数组,如果不用完就是浪费内存,超过了10个又放不下

    hero[0] = new Hero("ADC");

    hero[11]= new Hero("Mid");    //这里超过了10个就会报错

    }

    }

  3. 为了解决这种的尴尬局面,我们可以使用容器类ArrayList,我们增加一些代码在测试类里面。

    package cn.jse.t1;

    import java.util.ArrayList;

    public class TestCollection {

    public static void main(String[] args) {

    ...

    //为了解决数组的局限性,引入了容器类的概念

    ArrayList heros=new ArrayList();

    heros.add(new Hero("中单"));

    //输出一下当前的容器的容量

    System.out.println(heros.size());

    heros.add(new Hero("辅助"));

    System.out.println(heros.size());

    //结果发现容器的容量是随着对象的增加而增加的,就不用考虑数组的边界问题了

    }

    }

    我们可以看下控制台的输出:

    1

    2

  4. 我们可以看看ArrayList的常用方法:

    使用方法:我们还是在测试类中增加新的代码(add、contains)

    package cn.jse.t1;

    import java.util.ArrayList;

    public class TestCollection {

    public static void main(String[] args) {

    ...

    //接下来我们可以看看ArrayList的常用方法

    ArrayList<Hero> heros2=new ArrayList<Hero>();

    //把五个对象放入ArrayList中

    for(int i=0;i<5;i++){

    heros2.add(new Hero("hero " + i));

    }

    System.out.println(heros);

    // 在指定位置增加对象 比如在下标3位置add一个superhero

    Hero superHero = new Hero("Super hero");

    heros2.add(3, superHero);

    //将数组中所有的hero输出

    System.out.println(heros2.toString());

    //通过方法contains 判断一个对象是否在容器中

    System.out.println("那么这个Hero6在不在这里面呢?  回答是:"+heros2.contains(new Hero("hero6")));

    System.out.println("那么这个superHero在不在这里面呢?  回答是:"+heros2.contains(superHero));

    }

    }

     

    控制台输出:

    [中单, 辅助]   //这里是因为我们之前有加了2个hero

    [hero 0, hero 1, hero 2, Super hero, hero 3, hero 4]

    那么这个Hero6在不在这里面呢?  回答是:false

    那么这个superHero在不在这里面呢?  回答是:true

    其他的方法就不一一列举了,有兴趣的同学可以看看相关的知识点

      1. List

        引子:ArrayList实现了接口List,常见的写法会把引用声明为接口List类型。还要注意一点的是:import java.util.List;而不是awt里面的类。

        因为ArrayList实现了List接口,所以List接口的方法ArrayList都实现了。所有用法是和上面一样的。

        List heros = new ArrayList();

      2. 泛型 Generic

        其中:1.不指定泛型的容器,可以存放任何类型的元素
        2.指定了泛型的容器,只能存放指定类型的元素以及其子类

        我们之前编写的list或者是ArrayList都有编译警告,是因为没有使用泛型。所以我们可以这么干:

        List<Hero> heros = new ArrayList<Hero>();

        还有一点是在JDK7中提供了一个减少代码量的方式:

        List<Hero> heros = new ArrayList<>();

        虽然没有少写很多代码,但是总归比原先的好写一点对吧!

        其他的泛型内容包括支持泛型的类、泛型转型等等内容以后再更

java中级——集合框架【1】-ArrayList的更多相关文章

  1. java中级——集合框架【4】-Collections

    Collections 首先我们要知道Collections是一个类,容器的工具类,就如同Arrays是数组的工具类 反转 reverse 使List中的数据发生发转 package cn.jse.c ...

  2. java中级——集合框架【3】-HashSet

    HashSet package cn.jse.hashset; import java.util.HashSet; public class TestCollection { public stati ...

  3. java中级——集合框架【2】-二叉树

    二叉树 二叉树概念 首先我们要明确,二叉树由各种节点组成:还有就是二叉树特点:(1)每个节点都可以有左子节点,右子节点(2)每一个节点都有一个值 如图所示: 代码所示: package cn.jse. ...

  4. Java集合框架之ArrayList浅析

    Java集合框架之ArrayList浅析 一.ArrayList综述: 位于java.util包下的ArrayList是java集合框架的重要成员,它就是传说中的动态数组,用MSDN中的说法,就是Ar ...

  5. java的集合框架最全详解

    java的集合框架最全详解(图) 前言:数据结构对程序设计有着深远的影响,在面向过程的C语言中,数据库结构用struct来描述,而在面向对象的编程中,数据结构是用类来描述的,并且包含有对该数据结构操作 ...

  6. java.util 集合框架集合

    java的集合框架为程序提供了一种处理对象组的标准方式.设计了一系列标准泛型接口: ⑴Collection ()接口,扩展了Iterable接口,位于集合层次结构的顶部,因此所有的集合都实现Colle ...

  7. Java基础——集合框架

    Java的集合框架是Java中很重要的一环,Java平台提供了一个全新的集合框架.“集合框架”主要由一组用来操作对象的接口组成.不同接口描述一组不同数据类型.Java平台的完整集合框架如下图所示: 上 ...

  8. java的集合框架之一

    java是一套很成熟的东西,很多商用的东西都喜欢用它,用的人多,稳定.不过一般也不怎么说起它,因为太常见了,私下里说,写java应用层得就像农民工,每一处都是搭积木,根据设计师的东西如何优雅地搭好积木 ...

  9. 浅谈Java的集合框架

    浅谈Java的集合框架 一.    初识集合 重所周知,Java有四大集合框架群,Set.List.Queue和Map.四种集合的关注点不同,Set 关注事物的唯一性,List 关注事物的索引列表,Q ...

随机推荐

  1. go 调用windows dll 的三种方法

    参考:https://blog.csdn.net/qq_39584315/article/details/81287669 大部分代码参考:https://studygolang.com/articl ...

  2. [TJOI2017]城市

    嘟嘟嘟 这题刚开始想复杂了,想什么dp去了,其实没那么难. 考虑断掉一条边,记分离出来的两棵子树为A和B,那么合并后的树的直径可能有三种情况: 1.A的直径. 2.B的直径 3.A的半径+边权+B的半 ...

  3. 转://Oracle中定义者权限和调用者权限案例分析

    定义者权限:定义者权限指使用它所有者的权限,而不是当前用户来执行过程.因此,你可以限制用户执行的数据库操作,允许他们仅通过运行定义者权限的过程和函数访问数据.创建过程.函数和程序包的默认权限是定义者权 ...

  4. ssm框架的整合搭建(二)

    maven简单项目的创建前面已经完成了,下面开始依赖包和配置文件的编写 好好努力每一天!!!!!! 项目结构看这里 1.首先,依赖包pom.xml <project xmlns="ht ...

  5. 用java语言写一个简易版本的登录页面,包含用户注册、用户登录、用户注销、修改密码等功能

    package com.Summer_0421.cn; import java.util.Arrays; import java.util.Scanner; /** * @author Summer ...

  6. Java多线程(九)—— interrupt()和线程终止方式

    一.interrupt() 说明 interrupt()的作用是中断本线程.本线程中断自己是被允许的:其它线程调用本线程的interrupt()方法时,会通过checkAccess()检查权限.这有可 ...

  7. AT1219 歴史の研究

    附带权值的类区间众数问题?不是很好策啊 发现题目没有强制在线,而且也只有询问操作,那么可以考虑莫队 但是这里的莫队有一个很显著的特征,插入的时候很好维护答案,但是删除的时候不好回退 那么有没有什么办法 ...

  8. 高并发下的Java数据结构(List、Set、Map、Queue)

    由于并行程序与串行程序的不同特点,适用于串行程序的一些数据结构可能无法直接在并发环境下正常工作,这是因为这些数据结构不是线程安全的.本节将着重介绍一些可以用于多线程环境的数据结构,如并发List.并发 ...

  9. 探究如何永久更改Maven的Dynamic Web Project版本及pom.xml默认配置

    一:问题 在用eclipse创建一个maven project (webApp)时,我们一般会要进行许多麻烦的配置,比如 1.更改Java jdk版本为1.7或1.8(默认1.5) 2.补全src/m ...

  10. LeetCode 657. Robot Return to Origin

    There is a robot starting at position (0, 0), the origin, on a 2D plane. Given a sequence of its mov ...