先来一张容器的API框架图,我们在java中所学的所有知识,都是根据下面这张图来学习的....

容器API:

  1、Collection接口------定义了存储一组对象的方法,其子接口Set和List分别定义了存储的方式。

    ①、Set中的数据对象没有顺序且不可以重复。

    ②、List中的数据对象有顺序且可以重复。

  2、Map接口定义了存储“键(key)---值(value)映射对”的方法。

Collection接口:

  Collection接口中定义的方法(意思就是只要你实现了Collection接口,你将拥有下面所有方法):

    

Collection方法举例:

这里要说明的就是集合里面只能装引用类型的数据。

import java.util.*;
public class TestCollection{
public static void main (String args[]){
Collection collection = new ArrayList();
//可以放入不同类型的对象
collection.add("hello");
collection.add(new Person("f1",18));
collection.add(new Integer(100));
System.out.println(collection.size());
System.out.println(collection);
}
}
class Person{
private String name;
private int age;
public Person(String name,int age){
this.name = name;
this.age = age;
}
}

接下来,我们继续使用上面的例子,说说Collection里面remove()方法的使用:

import java.util.*;
public class TestCollection{
public static void main (String args[]){
Collection collection = new HashSet();
//可以放入不同类型的对象
collection.add("hello");
collection.add(new Person("f1",18));
collection.add(new Integer(100)); collection.remove("hello");
collection.remove(new Integer(100)); System.out.println(collection.remove(new Person("f1",18)));
System.out.println(collection);
}
}
class Person{
private String name;
private int age;
public Person(String name,int age){
this.name = name;
this.age = age;
}
public String getName(){
return name;
}
public int getAge(){
return age;
}
/*public boolean equals(Object obj){
if(obj instanceof Person){
Person person = (Person)obj;
return (name.equals(person.name) && age == person.age);
}
return super.equals(obj);
}
public int hashCode(){
return name.hashCode();
}*/
}

执行上面的例子,你会发现我们插入的数据”hello“和new Integer(100)都可以用remove()方法直接删除,但是对于new person("f1",18)这对象可以用remove()方法直接删除吗?答案是不可以的....

容器类对象在调用remove、contains等方法时需要比较对象是否相等,这会涉及到对象类型的equals方法和hashCode方法;对于自定义的类型,需要重写equals方法和hashCode方法以实现自定义对象相等规则。

  注意,相等的对象应该具有相等的hash Codes

Ieterator接口(简单说:Iterator就是一个统一的遍历我们集合中所有元素的方法)

  1、所有实现了Collection接口的容器类都有一个iterator方法用以返回一个实现了Iterator接口的对象。

  2、Iterator对象称作迭代器,用以方便的实现对容器元素的遍历实现。

  3、Iterator实现了下列方法:

下面我们写一个用Iterator遍历集合元素的方法。(注:程序运行信息输出顺序可能跟我们输入的顺序不一致,这就是Set集合无序的效果)

import java.util.*;
public class TestCollection{
public static void main (String args[]){
Collection collection = new HashSet(); collection.add(new Person("zhang",1));
collection.add(new Person("gao",2));
collection.add(new Person("wang",3));
collection.add(new Person("du",4));
collection.add(new Person("liang",5));
collection.add(new Person("li",6)); Iterator iterator = collection.iterator();
while(iterator.hasNext()){
//next()的返回值类型是Object类型,需要转换为相应类型
Person person = (Person)iterator.next();
System.out.println(person.name);
}
}
}
class Person{
public String name;
private int age;
public Person(String name,int age){
this.name = name;
this.age = age;
}
public String getName(){
return name;
}
public int getAge(){
return age;
}
}

Set接口

  1、Set接口是Collection的子接口,Set接口没有提供的额外方法,但实现Set接口的容器类中的元素是没有顺序的,而且不可以重复

  2、Set接口可以与数学中”集合“的概念相对应。

  3、J2SDK API中所提供的容器类有HashSet、TreeSet等...

Set方法举例:

Set方法举例:

List接口:

  1、List接口是Collection的子接口,实现List接口的容器类中元素是有顺序的,而且可以重复。

  2、List容器中元素都对应一个整数型的序号记载其在内容中的位置,可以根据序号存取容器中的元素。

  3、L2SDK所提供的List容器类有ArrayList,LinkedList等...

List  方法举例:

  List常用算法:

List常用算法举例:

java之容器的更多相关文章

  1. JAVA的容器---List,Map,Set (转)

    JAVA的容器---List,Map,Set Collection├List│├LinkedList│├ArrayList│└Vector│ └Stack└SetMap├Hashtable├HashM ...

  2. Java集合容器简介

    Java集合容器主要有以下几类: 1,内置容器:数组 2,list容器:Vetor,Stack,ArrayList,LinkedList, CopyOnWriteArrayList(1.5),Attr ...

  3. [转载]四大Java EE容器

    转载自: https://my.oschina.net/diedai/blog/271367 现在流行的Java EE容器有很多:Tomcat.JBoss.Resin.Glassfish等等.下面对这 ...

  4. 转 四大Java EE容器(Tomcat、JBoss、Resin、Glassfish)之简单比较

                                      现在流行的Java EE容器有很多:Tomcat.JBoss.Resin.Glassfish等等.下面对这四种Java EE容器进行 ...

  5. java并发容器(Map、List、BlockingQueue)

    转发: 大海巨浪 Java库本身就有多种线程安全的容器和同步工具,其中同步容器包括两部分:一个是Vector和Hashtable.另外还有JDK1.2中加入的同步包装类,这些类都是由Collectio ...

  6. Spring @Bean注解 (基于java的容器注解)

    基于java的容器注解,意思就是使用Java代码以及一些注解,就可以取代spring 的 xml配置文件. 1-@Configuration & @Bean的配合 @Configuration ...

  7. 各种容器与服务器的区别与联系:Servlet容器、WEB容器、Java EE容器、应用服务器、WEB服务器、Java EE服务器

    1.容器与服务器的联系 如上图,我们先来看下容器与服务器的联系:容器是位于应用程序/组件和服务器平台之间的接口集合,使得应用程序/组件可以方便部署到服务器上运行. 2.各种容器的区别/联系 2-1.容 ...

  8. 四大Java EE容器(Tomcat、JBoss、Resin、Glassfish)之简单比较

    转自:http://www.cxybl.com/html/bcyy/java/201106241007.html 现在流行的Java EE容器有很多:Tomcat.JBoss.Resin.Glassf ...

  9. 各种容器与服务器的区别与联系 Servlet容器 WEB容器 Java EE容器 应用服务器 WEB服务器 Java EE服务器

    转自:https://blog.csdn.net/tjiyu/article/details/53148174 各种容器与服务器的区别与联系 Servlet容器 WEB容器 Java EE容器 应用服 ...

  10. 【Java web 容器resin的安装】

    #resin的安装 #启动resin #访问resin监听的java web容器端口 resin修改端口监听号

随机推荐

  1. [新概念51单片机C语言教程·郭天祥] 1、 基础知识必备

    目录: 单片机的大致介绍         1-1.通俗定义         1-2.51系列产品         1-3.标号意思         1-4.引脚介绍         1-5.用C语言开 ...

  2. JPA 使用

    本文以JPA+Hibernate 角色与权限示例说明. 角色实体定义: @Entity @Table public class Role { private long id; private Stri ...

  3. Minifying Angular应用时产生的问题

    一.产生的问题 如果你正在进行AngularJS的项目开发,生产时Minified JS文件有没有遇到下面问题: angular.module("myApp", []) .cont ...

  4. java web module of login

    Reffer to the book<java web整合开发王者归来>. It's jsp page. Offer the values of username and password ...

  5. iOS开发-友盟分享(3)

    iOS 友盟分享 这个主要是提到如何通过友盟去自定义分享的步骤: 一.肯定要去友盟官网下载最新的SDK包,然后将SDK导入到你的工程文件夹里面去: 二.注册友盟账号,将你的APP添加到你的账号里面然后 ...

  6. Leetcode 203 Remove Linked List Elements 链表

    去掉链表中相应的元素值 /** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next ...

  7. Leetcode 263 Ugly Number 数论 类似质因数分解

    Ugly Number的质因数仅为2,3,5 将输入的数分别除以2,3,5直到不能除,看是否为1,为1的是Ugly Number,其他则不是. class Solution { public: boo ...

  8. ucos操作系统的内核有哪些调度方法

    1)时间片轮番调度法 假设系统中有5个任务,T1,T2,T3,T4,T5,这个时候,操作系统为每一个任务分配时间,比如说我们为T1任务分配10毫秒,为T2任务分配20毫秒,为T3任务分配5毫秒,为T4 ...

  9. 淘宝开放平台TOP测试环境

    沙箱测试环境 淘宝沙箱环境是淘宝开放平台(TOP)提供给独立软件开发商(ISV)的测试环境.数据完全独立,大部分API已经部署到该环境中供ISV进行API的功能测试,对与APP的调用量无限制,但获取大 ...

  10. JavaScript 2016年的概况

    国外的网站stateofjs.com根据超过九千位开发人员的问卷调查,发布了2016年JavaScript的年度概况报名. 注:本文翻译的部分可能存在不准确的情况,请以原文为准. 调查结果的报告目录结 ...