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 ...
随机推荐
- django ORM的总结
1.django分表的方案: https://mp.weixin.qq.com/s?__biz=MjM5NjA3Nzk3Ng==&mid=2648154502&idx=1& ...
- https验证证书的三个级别
一.无条件信任证书 1. func urlSession(_ session: URLSession, didReceive challenge: URLAuthenticationChallenge ...
- Python 字典方法
访问字典的值 字典中的 键/值 实际上就是一种映射关系,只要知道了 “键”,就肯定知道 “值”. >>> my_dict = dict(name = 'zhangsan',other ...
- Servlet简单概念和开发小总结
一.Servlet概念 安装了tomcat了解到其实tomcat是一个容器,可以处理用户发送的请求(Request),之后会为请求做出一个响应(Response),此时用户只能请求一些现成的资源,容器 ...
- Egg入门学习(一)
一:什么是Egg? 它能做什么?Egg.js是nodejs的一个框架,它是基于koa框架的基础之上的上层框架,它继承了koa的,它可以帮助开发人员提高开发效率和维护成本.Egg约定了一些规则,在开发中 ...
- C# — Socket通信实现
昨天晚上在网上查找资料,简单实现了C#开发的Socket通信,以下是具体的开发流程,我使用的是VS2017进行开发的: 一.服务器端: 1.新建一个项目,Windows控制台程序 2.重命名cs文件 ...
- linux日志:syslogd和klogd及syslog
一. 日志守护进程 syslogd和klogd是很有意思的守护进程,syslogd是一个分发器,它将接收到的所有日志按照/etc/syslog.conf的配置策略发送到这些日志应该去的地方,当然也包括 ...
- python调用数据返回字典dict数据的现象1
python调用数据返回字典dict数据的现象1 思考: 可以看到这两种情况,区别在于构造函数make()里赋值给字典dict的方式不同.使用相同的调用方式,而结果却完全不同.可以看到第二种情况才是我 ...
- CAS5.X 集群配置 初版
基础版 cas-overlay pom.xml <?xml version="1.0" encoding="UTF-8"?> <projec ...
- 下面哪项技术可以用在WEB开发中实现会话跟踪实现?
下面哪项技术可以用在WEB开发中实现会话跟踪实现? A:session B:Cookie C:地址重写 D:隐藏域 答案:ABCD 会话跟踪是一种灵活.轻便的机制,它使Web上的状态编程变为可能. H ...