集合框架----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. Web和移动开发的未来

    Web和移动开发的未来 当我们与来自整个IT行业的专家交谈时,他们告诉我们技术,PWA和优化的持续整合是关键. 为了收集有关网络和移动开发当前和未来状况的见解,我们与19位IT主管进行了交流,我们问道 ...

  2. [MCM] K-mean聚类与DBSCAN聚类 Python

    import matplotlib.pyplot as plt X=[56.70466067,56.70466067,56.70466067,56.70466067,56.70466067,58.03 ...

  3. mongodb创建用户(转发)

    参考文档: https://www.cnblogs.com/itxiongwei/p/5520863.html MongoDB 缺省是没有设置鉴权的,业界大部分使用 MongoDB 的项目也没有设置访 ...

  4. 6-MVC结构简介

    一.javeEE的项目结构层次:MVC1.Model:模型层(DAO+业务层) 2.View:视图层 jsp3.Control:控制层 servlet 二.分层的原则:1.层与层之间松耦合,层内保持高 ...

  5. PAT A1052 Linked List Sorting (25 分)——链表,排序

    A linked list consists of a series of structures, which are not necessarily adjacent in memory. We a ...

  6. jmeter(二十三)分布式测试

    jmeter用了一年多,也断断续续写了一些相关的博客,突然发现没有写过分布式测试的一些东西,这篇博客就介绍下利用jmeter做分布式测试的一些技术点吧,权当参考... 关于jmeter的介绍和元件作用 ...

  7. TMS-规划图

    规划图 规划图 规划图 规划图 规划图 规划图 规划图 规划图 规划图 规划图 规划图 规划图 规划图 规划图 规划图 规划图 规划图 规划图 规划图 规划图 规划图 规划图 规划图 规划图 规划图 ...

  8. Mysql MHA高可用集群架构

    ** 记得之前发过一篇文章,名字叫<浅析MySQL高可用架构>,之后一直有很多小伙伴在公众号后台或其它渠道问我,何时有相关的深入配置管理文章出来,因此,民工哥,也将对前面的各类架构逐一进行 ...

  9. Python 学习 第十五篇:模块搜索路径和包导入

    在导入自定义的模块时,除了指定模块名之外,也需要指定目录,由于Python把目录称作包,因此,这类导入被称为包导入.包导入把计算机上的目录变成Python的命名空间,而目录中所包含的子目录和模块文件则 ...

  10. item 24: 区分右值引用和universal引用

    本文翻译自<effective modern C++>,由于水平有限,故无法保证翻译完全正确,欢迎指出错误.谢谢! 博客已经迁移到这里啦 古人曾说事情的真相会让你觉得很自在,但是在适当的情 ...