最近我又在研究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. LeetCode_Minimum Depth of Binary Tree

    一.题目 Minimum Depth of Binary Tree My Submissions Given a binary tree, find its minimum depth. The mi ...

  2. CSDN开源夏令营 基于Compiz的switcher插件设计与实现之前期准备 git的简单使用

    因为项目的代码须要上传到git上.就须要学习一下git的使用了. 我初步接触了一下git,准备用此帖来记录git的学习,此帖会随着我对git了解的深入动态更新. 一.GIT的介绍 1.概述:git是一 ...

  3. linux下网卡bonding配置

    linux下网卡bonding配置   章节 bonding技术 centos7配置bonding centos6配置bonding 一.bonding技术 bonding(绑定)是一种linux系统 ...

  4. 【Atheros】网卡驱动速率调整算法概述

    我做网卡驱动,最主要的内容就是设计和改进速率调整算法,随着802.11协议簇的新标准越来越多,速率越来越高,调制编码方式也越来越多,一般来说,速率越高越可能丢包,速率越低越稳定,这是整体状况,但不是必 ...

  5. Centos 安装libreoffice 生成office 报错信息见内容

    个人博客:https://blog.sharedata.info/ 错误信息:/opt/libreoffice5.2/program/soffice.bin: error while loading ...

  6. maven;cargo;仓库

    [说明]又到晚上九点了,不得不加快进度,首先就是日报.今天上午在服务器搭建maven,下午完成了一个maven web项目,晚上改错找maven配置问题(因为想装jetty和cargo) 一:今日完成 ...

  7. vue router-link子级返回父级页面

    vue-router嵌套路由,从二级路由跳转到一级路由时,间歇性导致一级路由重叠 解决方法: 1.使用this.$router.push跳转

  8. windowsphone8.1学习笔记之应用数据(四)

    应用数据的存储格式常用的分为json和xml两种(其实我都想略过这个地方的,json我一直用的是json.net,而wp上操作xml的方式与其他相比也没太多变化). 先说说json数据存储,关于jso ...

  9. PHP 提高PHP性能的编码技巧以及性能优化

    0.用单引号代替双引号来包含字符串,这样做会更快一些.因为PHP会在双引号包围的字符串中搜寻变量,单引号则不会,注意:只有echo能这 么做,它是 一种可以把多个字符串当作参数的“函数”(译注:PHP ...

  10. (转)基于libRTMP的流媒体直播之 AAC、H264 推送

    参考: 1,基于libRTMP的流媒体直播之 AAC.H264 推送 http://billhoo.blog.51cto.com/2337751/1557646