Java集合类--->入门上篇
最近我又在研究Java语言,这是第五次还是第六次学习Java的集合类,你也许会惊讶为什么这么多次?哈哈,因为之前的我没有记录下来,忘记了,当然最主要还是觉得自己毅力不够,没有坚持。那么,这次我将换一种方式进行Java的框架类学习:一是只学习常用的部分,二是一边学习一边写成博客,并用代码进行验证。
集合类又叫容器类,容器是什么?容器就是装东西的,它在Java中就是装对象的,这时候我就纳闷儿了:数组不就可以存储各种各样的对象吗,又增加一个什么集合类,岂不是多此一举?于是我就开始查阅资料,终于得到一个结果,使用数组的确可以存储对象,但是如果对象数目无法确定的情况下,数组是不实用的,因为数组的长度是不变的,然而呢,集合类可以存储任意类型的对象,并且长度可以变。因此,我认为集合类可以完全取代数组,除非一些特别简单的情况,可以考虑使用数组,其余时候都应该首先考虑使用集合类。
集合类按照存储结构(数据结构中又叫做物理结构)分为:单列集合、双列集合。
哦,对了,所有的集合类都位于java.util包中,使用之前请务必import一下。
接下来看看常用的集合框架图:(引用自网络)
Collection:是单列集合的根接口。常用的两个子接口分别是List、Set。
List的特点就是:元素有序,元素可以重复。主要实现类ArrayList、LinkedList、Vector(如今很少用)。
Set的特点就是:元素无序,而且不能重复。主要实现类HashSet、TreeSet。
Map:是双列集合的根接口,双列集合主要用来存储键值对。主要实现类HashTable、HashMap、TreeMap。
我先学习的是单列集合,从根接口Collection开始。根接口定义了很多单列集合通用的方法,主要作用:在集合中添加元素、删除元素、获取集合中元素个数等。用实例对常用方法进行说明:(使用ArrayList举例)
package testCollection;
import java.util.*;
//测试单列集合根接口Collection
public class CollectionTest00 {
public static void main(String[] args)
{
Collection coll = new ArrayList();
Person person = new Person("仗剑走天涯", 23);
person.toString();
//向集合中添加一个元素 add()
coll.add("ZSY is a beauty!");
coll.add(123);
coll.add(person);
//获取该集合元素的个数 size()
System.out.println("集合元素个数:"+coll.size()+"个");
//判断该集合元素是否为空
if(!coll.isEmpty())
System.out.println("集合不是空!");
else
System.out.println("集合是空!");
//判断是否包含某个元素contains(Object o)
System.out.println(coll.contains(123));
//删除集合中指定元素remove(Object o)
System.out.println(coll.toString());
coll.remove(123);
System.out.println(coll.contains(123));
System.out.println(coll.toString());
//删除该集合中的所有元素
coll.clear();
System.out.println(coll.size());
//再次初始化
coll.add("ZSY is a beauty!");
coll.add(123);
coll.add(person);
System.out.println(coll.size());
//将指定集合中的所有元素添加到该集合中 addAll(Collection c)
Collection coll1 = new ArrayList();
coll1.addAll(coll);
System.out.println("复制后的:\n"+coll1);
//删除指定集合的所有元素
coll.remove(123);
System.out.println("删除前的:\n"+coll);
coll1.removeAll(coll);
System.out.println("删除后的:\n"+coll1);
//返回在该集合的元素上进行迭代的迭代器,用于遍历该集合所有元素itrator
Iterator it = coll.iterator();
while(it.hasNext())
{
Object obj = it.next();
System.out.println(obj);
}
//增强型for循环,进行遍历
for(Object obj : coll)
{
System.out.println(obj);
}
} } class Person{
private String name;
private int age; Person(String name,int age)
{
this.name=name;
this.age=age;
} public String getName()
{
return this.name;
} public int getAge()
{
return this.age;
} public void setName(String name)
{
this.name=name;
} public void setAge(int age)
{
this.age=age;
}
@Override
public String toString()
{
String str = new String("我的名字叫:"+name+";我的年龄:"+age+"岁。");
System.out.println(str);
return str;
}
}
这里,必须隆重给自己介绍一下Itrator接口,它的中文名:迭代器------>实质功能就是用来进行循环遍历所有元素的,它也是集合框架中的一员。对于它的使用方式,常用的格式就是如代码所示:先得到Itrator对象,然后判断集合是否还有下一个元素,用next()方法取出下一个元素,记住规矩:先取后用。
代码中,还用到了增强型for循环,它的格式如下:
for(集合类存储类型 变量名:集合的变量名)
{
执行语句...
}//当然增强型for循环也适用于数组,例如:
int[] a=new int[10];
for(int i=0;i<10;i++)
{
a[i]=i+4;
}
for(int b:a)
{
System.out.println(b);
}
集合框架入门上篇,就到这里了,主要分析了单列集合的常用操作。
附:以上程序运行结果:
Java集合类--->入门上篇的更多相关文章
- Java集合类--->入门下篇
HashSet集合 在上篇大概了解了什么是集合类,知道它可以存储任意类型的对象,并且比数组灵活,集合类的长度可以变化.这里将接着介绍一下,Set接口的实现类之一,HashSet集合,Set集合:元素不 ...
- 《JAVA 从入门到精通》 - 正式走向JAVA项目开发的路
以前很多时候会开玩笑,说什么,三天学会PHP,七天精通Nodejs,xx天学会xx ... 一般来说,这样子说的多半都带有一点讽刺的意味,我也基本上从不相信什么快速入门.我以前在学校的时候自觉过很多门 ...
- java集合类(六)About Queue
接上篇“java集合类(五)About Map” 终于来到了java集合类的尾声,太兴奋了,不是因为可以休息一阵了,而是因为又到了开启新知识的时刻,大家一起加油打气!!Come on...Fighti ...
- java集合类(五)About Map
接上篇“java集合类(四)About Set” 这次学完Map之后,就剩队列的知识,之后有关java集合类的学习就将告一段落,之后可能会有java连接数据库,I/O,多线程,网络编程或Android ...
- java集合类(四)About Set
接上篇:java集合类(三)About Iterator & Vector(Stack) 之前,在比较java常见集合类的时候,就了解到一点有关Set的特性.实现类及其要求等,读者可以去温习下 ...
- java集合类(三)About Iterator & Vector(Stack)
接上篇:java集合类学习(二) Talk about “Iterator”: 任何容器类,在插入元素后,还需要取回元素,因为这是容器的最基本工作.对于一般的容器,插入有add()相关方法(List, ...
- java集合类(二)List学习
接上篇 java集合类(一) List接口继承了Collection接口和Iterable接口,即同样含有Collection和 Iterable的特性,还有方法,其基本方法有: 1)有关添加: b ...
- C功底挑战Java菜鸟入门概念干货(二)
(接上篇博文:C功底挑战Java菜鸟入门概念干货(一)) 一.Java面向对象程序设计-类的基本形式 1.“类”是把事物的数据与相关的功能封装在一起,形成的一种特殊结构,用以表达对真实世界的一种抽象概 ...
- 《java从入门到精通》学习记录
目录 <Java从入门到精通>学习记录 3 基础的基础部分: 3 一. 常量与变量 3 1. 掌握: 3 (1) .常量与变量的声明方式: 3 (2) .变量的命名规则: 3 (3) .变 ...
随机推荐
- Linux安装php-7.0.16,完成php和apache的配置
Linux安装php-7.0.16,完成php和apache的配置 版本:php-7.0.16.tar.gz,libxml2-2.9.2.tar.gz(php需要它的支持,首先安装它) 说明 ...
- EJB是什么?(节选)
近期的项目中使用了EJB.当时就仅仅知道怎么用,没有深入的去理解.当完毕这个项目之后.再回想项目中使用的技术.框架以及工具的时候,突然感觉对EJB这个概念非常是模糊,于是上网搜一些资料.可是,非常多的 ...
- 【WPF学习笔记】之WPF基础:依赖关系属性和通知
这些天来,对象似乎已经忙得晕头转向了.每个人都希望它们做这做那.Windows® Presentation Foundation (WPF) 应用程序中的典型对象会接到各种各样不同的请求:有要求绑定到 ...
- publish over ssh 实现 Jenkins 远程部署
Jenkins远程部署,一开始没有任何头绪,想了很多方案. 因为两台机器都是windows系统,所以想到publish over cifs, 但是这个网上资料太少,貌似只能内网使用.又想到了Jenki ...
- GitHub 寻宝指南
GitHub 寻宝指南 寻找 Demo 技术栈的关键字搜索,并按更新时间进行排序 生命有限 ,如若是每次我们尝试一个新的技术,总得自己编写一个个 Demo.编写多个 Demo,都得花去个半天八小时的时 ...
- JSP 表单处理向服务器提交信息
JSP 表单处理 我们在浏览网页的时候,经常需要向服务器提交信息,并让后台程序处理.浏览器中使用 GET 和 POST 方法向服务器提交数据. GET 方法 GET方法将请求的编码信息添加在网址后面, ...
- 【原创】Hibernate自动生成(1)
本实战是博主初次学习Java,分析WCP源码时,学习HibernateTools部分的实战,由于初次接触,难免错误,仅供参考,希望批评指正. 开发环境: Eclipse Version: Photon ...
- java servlet中上传文件的简单实现(基于第三方jar)
这里的案例使用了两种文件上传的组件.分别介绍 1.使用JSPSmartUpload完成上传 package test_servlet_package; import java.io.File; imp ...
- jmeter--基于http+json接口的功能测试
jmeter--基于http+json接口的功能测试 测试项目叫做smile_task,简称sm_task.这是一个基于nodejs超简单的todo list,sm_task没有任何UI界面(纯接口) ...
- linux c编程:进程控制(三)_exec函数
fork()函数通过系统调用创建一个与原来进程(父进程)几乎完全相同的进程(子进程是父进程的副本,它将获得父进程数据空间.堆.栈等资源的副本.注意,子进程持有的是上述存储空间的“副本”,这意味着父子进 ...