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) .变 ...
随机推荐
- redhat安装中文man手册
1.下载中文man手册 http://download.chinaunix.net/download.php?id=13232&ResourceID=6537 2.上传至服务器并解压 tar ...
- 关于使用eclipse开发最小运行组件包
有的时候向用eclipse组件,但是其中好多东西是相互关联的,如果在eclipse上做二次开发固然可以,但是有的时候想要的只不过是一个可以运行的架包而已,所以不必要那么多东西. 下面是我使用eclip ...
- iOS_3_图片浏览
终于效果图: BeyondViewController.h // // BeyondViewController.h // 03_图片浏览 // // Created by beyond on 14- ...
- Linux进程间通信(IPC)机制总览
Linux进程间通信 Ø 管道与消息队列 ü 匿名管道,命名管道 ü 消息队列 Ø 信号 ü 信号基础 ü 信号应用 Ø 锁与信号灯 ü 记录锁 ü 有名信号灯 ü 无名信号灯(基 ...
- Linux 安装OpenSSL出错的解决方法
以前编译php没有 –with–openssl 现在要使用到 openssl ,phpinze扩展安装,但是在make时候报错 今天找这个在网上找了大半天,最后总结应该是php版本本身的问题,错误是p ...
- JSP具体篇——application
application对象 application对象用于保存全部应用程序中的共同拥有数据.它在server启动时自己主动创建.在server停止时自己主动销毁. 当application对象没有被销 ...
- WPF 支持集合绑定的控件
WPF 支持集合绑定的控件 ListBox ComboBox ListView DataGrid
- swift打印方法名文件路径
1.打印方法名 print(#function) 1.打印文件路径 print(#file)
- 【Robot Framework】---- Robot Framework简介、特点、RIDE
Robot Framework简介.特点.RIDE 一.简介.特点. Robot Framework是一款python编写的功能自动化测试框架.具备良好的可扩展性,支持关键字驱动,可以同时测试多种类型 ...
- WndProc漏写override会发生什么情况?
试图改写TForm1(注意,不是TForm类)的WndProc函数,从而达到某些目的.程序如下: unit Unit1; interface uses Windows, Messages, SysUt ...