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 ...
随机推荐
- 提升SQLite数据插入效率低、速度慢的方法
前言 SQLite数据库由于其简单.灵活.轻量.开源,已经被越来越多的被应用到中小型应用中.甚至有人说,SQLite完全可以用来取代c语言中的文件读写操作.因此我最近编写有关遥感数据处理的程序的时候, ...
- NGINX+PHP+ZABBIX,推荐
https://www.cnblogs.com/liuzhennan/articles/5319280.html
- C# Lambda 表达式学习之(四):动态构建类似于 c => c.Age == 2 || c.Age == 5 || c => c.Age == 17 等等一个或多个 OrElse 的表达式
可能你还感兴趣: 1. C# Lambda 表达式学习之(一):得到一个类的字段(Field)或属性(Property)名,强类型得到 2. C# Lambda 表达式学习之(二):LambdaExp ...
- Spring Cloud Config(配置中心)
每天学习一点点 编程PDF电子书.视频教程免费下载:http://www.shitanlife.com/code 一.简介 Spring Cloud Config为分布式系统中的外部配置提供服务器和客 ...
- python的格式化输出
Python的格式化输出有两种: 一.类似于C语言的printf的方法 二.类似于C#的方法
- 一)surging 微服务框架使用系列之surging 的准备工作rabbitmq安装(转载 https://www.cnblogs.com/alangur/p/8339905.html)
(一)surging 微服务框架使用系列之surging 的准备工作rabbitmq安装 (1)下载erlang: http://www.erlang.org/download/otp_win64 ...
- pytorch学习-WHAT IS PYTORCH
参考:https://pytorch.org/tutorials/beginner/blitz/tensor_tutorial.html#sphx-glr-beginner-blitz-tensor- ...
- 一步一步和我学Apache JMeter
一. Apache JMeter介绍 1. Apache JMeter是什么? Apache JMeter 是Apache组织的开放源代码项目,是一个100%纯Java桌面应用,用于压力测试和性能测量 ...
- 初学Python——文件操作第三篇
一.引言 什么?有了第二篇文件操作还不够?远远不够!而且在读完第三篇文件操作还是不够.关于文件的操作,后续的学习中将不断学习新的操作方式,使用更加合适的方法. 进入正题,上一篇讲到,Python对文件 ...
- .Net架构篇:实用中小型公司支付中心设计
前言 说起支付平台,支付宝量级的支付平台和一个小型公司的支付不可同日耳语.一个初创或刚创业一两年的公司,一没人力,二没财力的情况下,如果也想对接支付那怎么办呢?感谢支付宝和微信支付,两大行业巨头提供了 ...