最近我又在研究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集合类--->入门上篇的更多相关文章

  1. Java集合类--->入门下篇

    HashSet集合 在上篇大概了解了什么是集合类,知道它可以存储任意类型的对象,并且比数组灵活,集合类的长度可以变化.这里将接着介绍一下,Set接口的实现类之一,HashSet集合,Set集合:元素不 ...

  2. 《JAVA 从入门到精通》 - 正式走向JAVA项目开发的路

    以前很多时候会开玩笑,说什么,三天学会PHP,七天精通Nodejs,xx天学会xx ... 一般来说,这样子说的多半都带有一点讽刺的意味,我也基本上从不相信什么快速入门.我以前在学校的时候自觉过很多门 ...

  3. java集合类(六)About Queue

    接上篇“java集合类(五)About Map” 终于来到了java集合类的尾声,太兴奋了,不是因为可以休息一阵了,而是因为又到了开启新知识的时刻,大家一起加油打气!!Come on...Fighti ...

  4. java集合类(五)About Map

    接上篇“java集合类(四)About Set” 这次学完Map之后,就剩队列的知识,之后有关java集合类的学习就将告一段落,之后可能会有java连接数据库,I/O,多线程,网络编程或Android ...

  5. java集合类(四)About Set

    接上篇:java集合类(三)About Iterator & Vector(Stack) 之前,在比较java常见集合类的时候,就了解到一点有关Set的特性.实现类及其要求等,读者可以去温习下 ...

  6. java集合类(三)About Iterator & Vector(Stack)

    接上篇:java集合类学习(二) Talk about “Iterator”: 任何容器类,在插入元素后,还需要取回元素,因为这是容器的最基本工作.对于一般的容器,插入有add()相关方法(List, ...

  7. java集合类(二)List学习

    接上篇  java集合类(一) List接口继承了Collection接口和Iterable接口,即同样含有Collection和 Iterable的特性,还有方法,其基本方法有: 1)有关添加: b ...

  8. C功底挑战Java菜鸟入门概念干货(二)

    (接上篇博文:C功底挑战Java菜鸟入门概念干货(一)) 一.Java面向对象程序设计-类的基本形式 1.“类”是把事物的数据与相关的功能封装在一起,形成的一种特殊结构,用以表达对真实世界的一种抽象概 ...

  9. 《java从入门到精通》学习记录

    目录 <Java从入门到精通>学习记录 3 基础的基础部分: 3 一. 常量与变量 3 1. 掌握: 3 (1) .常量与变量的声明方式: 3 (2) .变量的命名规则: 3 (3) .变 ...

随机推荐

  1. jquery简洁遮罩插件

    /************************** *Desc:提交操作时遮罩 *Argument:type=0 全屏遮 1局部遮 *Author:Zery-Zhang *Date:2014-09 ...

  2. sublime text 配置golang开发环境

    一.准备工作: 1.下载Go语言包: https://code.google.com/p/go/downloads/list 2.下载Git: https://code.google.com/p/ms ...

  3. JQ中find()与filter()的区别

    刚开始学的时候,对于find()和filter()有点理不清楚,下面通过案例相信就可以很快的区分清楚 以下是代码 find弹出的是 filter()弹出的是 下面我们添加div的class是rain ...

  4. Android中应用安装分析

    #1 安装方式 1 安装系统APK和预制APK时,通过PMS的构造函数中安装,即第一次开机时安装应用,没有安装界面. 2 网络下载安装,通过应用商店等,即调用PackageManager.instal ...

  5. httpClient实现

    1.实现功能 向关注了微信公众号的微信用户群发消息.(可以是所有的用户,也可以是提供了微信openid的微信用户集合) 2.基本步骤 前提: 已经有认证的公众号或者测试公众账号 发送消息步骤: 发送一 ...

  6. C# .Net 下 x86使用大内存的处理

    /LARGEADDRESSAWARE 选项通知链接器应用程序可处理大于 2 GB 的地址. 在 64 位编译器中,默认情况下启用此选项. 在 32 位编译器中,如果未在链接器行上指定 /LARGEAD ...

  7. 谷歌浏览器console.log()失效,打印不出来内容

    这个问题困扰好几天了,网上说的都说的是下图: 勾选这三个就好了,但是我的本来就是勾选上的,还是不行. 后来发现这个: 把这个去掉就可以了,如下图: 原来是因为之前调试js的时候,使用了这个过滤,导致对 ...

  8. spring+struts1

    概括及介绍: 集成原理:在Action 中获得BeanFactory,通过BeanFactory取得业务逻辑对象 本例采用:JDK1.8,tomcat7.0.9  技术点:spring与strut1集 ...

  9. poj1061(extendgcd)

    看完题目后,题目要求: 设时间为t (x+mt)%L = (y+nt)%L ( x-y + (m-n)*t )= k*L (k是整数,可为负) 然后就是经典的 xa+yb=c 求解x,y的经典题目了. ...

  10. JNDI知道这么多就够了!

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/sunshoupo211/article/details/37924017 JNDI 全称:Java ...