java中级——集合框架【1】-ArrayList
集合框架----ArrayList
引子:我们先来看看传统数组的用法
写一个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;
}
}
写一个测试类
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个就会报错
}
}
为了解决这种的尴尬局面,我们可以使用容器类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
我们可以看看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
其他的方法就不一一列举了,有兴趣的同学可以看看相关的知识点
List
引子:ArrayList实现了接口List,常见的写法会把引用声明为接口List类型。还要注意一点的是:import java.util.List;而不是awt里面的类。

因为ArrayList实现了List接口,所以List接口的方法ArrayList都实现了。所有用法是和上面一样的。
List heros = new ArrayList();
泛型 Generic
其中:1.不指定泛型的容器,可以存放任何类型的元素
2.指定了泛型的容器,只能存放指定类型的元素以及其子类我们之前编写的list或者是ArrayList都有编译警告,是因为没有使用泛型。所以我们可以这么干:
List<Hero> heros = new ArrayList<Hero>();
还有一点是在JDK7中提供了一个减少代码量的方式:
List<Hero> heros = new ArrayList<>();
虽然没有少写很多代码,但是总归比原先的好写一点对吧!
其他的泛型内容包括支持泛型的类、泛型转型等等内容以后再更
java中级——集合框架【1】-ArrayList的更多相关文章
- java中级——集合框架【4】-Collections
Collections 首先我们要知道Collections是一个类,容器的工具类,就如同Arrays是数组的工具类 反转 reverse 使List中的数据发生发转 package cn.jse.c ...
- java中级——集合框架【3】-HashSet
HashSet package cn.jse.hashset; import java.util.HashSet; public class TestCollection { public stati ...
- java中级——集合框架【2】-二叉树
二叉树 二叉树概念 首先我们要明确,二叉树由各种节点组成:还有就是二叉树特点:(1)每个节点都可以有左子节点,右子节点(2)每一个节点都有一个值 如图所示: 代码所示: package cn.jse. ...
- Java集合框架之ArrayList浅析
Java集合框架之ArrayList浅析 一.ArrayList综述: 位于java.util包下的ArrayList是java集合框架的重要成员,它就是传说中的动态数组,用MSDN中的说法,就是Ar ...
- java的集合框架最全详解
java的集合框架最全详解(图) 前言:数据结构对程序设计有着深远的影响,在面向过程的C语言中,数据库结构用struct来描述,而在面向对象的编程中,数据结构是用类来描述的,并且包含有对该数据结构操作 ...
- java.util 集合框架集合
java的集合框架为程序提供了一种处理对象组的标准方式.设计了一系列标准泛型接口: ⑴Collection ()接口,扩展了Iterable接口,位于集合层次结构的顶部,因此所有的集合都实现Colle ...
- Java基础——集合框架
Java的集合框架是Java中很重要的一环,Java平台提供了一个全新的集合框架.“集合框架”主要由一组用来操作对象的接口组成.不同接口描述一组不同数据类型.Java平台的完整集合框架如下图所示: 上 ...
- java的集合框架之一
java是一套很成熟的东西,很多商用的东西都喜欢用它,用的人多,稳定.不过一般也不怎么说起它,因为太常见了,私下里说,写java应用层得就像农民工,每一处都是搭积木,根据设计师的东西如何优雅地搭好积木 ...
- 浅谈Java的集合框架
浅谈Java的集合框架 一. 初识集合 重所周知,Java有四大集合框架群,Set.List.Queue和Map.四种集合的关注点不同,Set 关注事物的唯一性,List 关注事物的索引列表,Q ...
随机推荐
- 隔离 docker 容器中的用户-------分享链接
https://www.cnblogs.com/sparkdev/p/9614326.html
- centos7下如何隐藏nginx的版本号
我们在访问nginx的时候会暴露nginx的版本号,如何将这些版本号隐藏呢? 其实隐藏版本号非常简单 在nginx的配置文件中添加一个server——tokens off:参数就可以了,下面进行操作 ...
- 实战Performance Monitor监测EnyimMemcached
首先要将EnyimMemcached安装至Windows Performance Counters中. 将Enyim.Caching.dll复制到一个文件夹中 在命令行中进入.NET Framewor ...
- sku回忆笔记
分类表:(商品分类编号, 分类名称, 父分类编号)(1, 男装, 0)(2, 裤子, 1)(3, 外套, 1)(4, 内裤, 1)(5, 袜子, 1) 商品表:(商品编号, 商品名称, 商品分类编号, ...
- Servlet简单概念和开发小总结
一.Servlet概念 安装了tomcat了解到其实tomcat是一个容器,可以处理用户发送的请求(Request),之后会为请求做出一个响应(Response),此时用户只能请求一些现成的资源,容器 ...
- 记一次 OutOfMemoryError: Java heap space 的排错
1.情况概述 公司以前的某报名系统,项目启动后,在经过用户一段时间的使用之后,项目响应便开始变得极其缓慢,最后几乎毫无反应.日志里输出了一些似乎无关痛痒的异常,逐步修复,项目仍然出现这种情况,且 &q ...
- 前后端分离的利器:fiddler的实用功能举例
# 前后端分离的利器:fiddler的实用功能举例 ##what's fiddler fiddler是一款代理软件,对于前后端分离开发非常重要.可以说,如果前端开发没有用上fiddler或类似软件,那 ...
- filebeat 源码编译安装
下载filebeat源码(6.2.3)下载地址:链接: https://pan.baidu.com/s/1cPR7-xlQJuYZ77uaUpfSpQ 提取码: k77u github下载地址:htt ...
- Final Destination II -- 矩阵快速幂模板题
求f[n]=f[n-1]+f[n-2]+f[n-3] 我们知道 f[n] f[n-1] f[n-2] f[n-1] f[n-2] f[n-3] 1 1 ...
- 利用tushare进行对兴业银行股价的爬取,并使用numpy进行分析
import sysimport tushare as tsimport numpy as npdata=ts.get_h_data('601066')print(data)#读出兴业银行7列数据da ...