深入剖析java中的集合框架

 更新时间:2016年05月20日 16:10:21   投稿:jingxian  
下面小编就为大家带来一篇深入剖析java中的集合框架。小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

解析:如果并不知道程序运行时会需要多少对象,或者需要更复杂方式存储对象,那么可以使用Java集合框架。

如果启用集合的删除方法,那么集合中所有元素的索引会自动维护。

集合完全弥补了数组的缺陷。

02.集合框架的内容

 集合框架都包含三大块内容:对外的接口,接口的实现和对集合运算的算法

 01.接口:表示集合的抽象数据类型

 02.实现:集合框架中接口的具体实现

 03.算法:在一个实现了某个集合框架的接口的对象身上完成某种有用的计算方法

java集合框架简图:

 

 01.Collection接口存在储存一组不唯一(允许重复),无序的对象

02.Set接口继承Collection接口,存储一组唯一(不允许重复),无序的对象

03.List接口继承Collection接口,存储一组不唯一(允许重复),有序(以元素插入的次序来放置元素,不会重新排列)的对象

04.Map接口存储一组成对的键-值对象,提供key(键)到value(值)的映射。Map中的key不要求有序,不允许重复。value同样不要求有序,但允许重复。

05.Iterator接口是负责定义访问和遍历元素的接口。

下面开始介绍:

1.List接口     

List接口继承Collection接口,存储一组不唯一(允许重复),有序(以元素插入的次序来放置元素,不会重新排列)的对象

  实现List接口的常用类有ArrayList和LinkedList

ArrayList对数组进行了封装,实现了长度可变的数组

LinkedList采用链表存储方式,其优点在于插入,删除元素时效率比较高

01.ArrayList集合类

package cn.day001;

public class Penguin {
  private String name="无名氏";
  private String sex="Q仔";
  
  public Penguin() {

  }
  public Penguin(String name, String sex) {
    this.name = name;
    this.sex = sex;
  }    
  public String getName() {
    return name;
  }
  public void setName(String name) {
    this.name = name;
  }
  public String getSex() {
    return sex;
  }
  public void setSex(String sex) {
    this.sex = sex;
  }
  
  

}

测试类:

package cn.day001;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

//上机1 ArrayList集合类
public class Test {

  public static void main(String[] args) {
    //1.创建多个企鹅对象
    Penguin penguin=new Penguin("楠楠","Q仔");
    
    Penguin penguin2=new Penguin("花花","Q妹");
    
    Penguin penguin3=new Penguin("哲哲","Q妹");
    
    //2.创建Arraylist集合对象并把2个企鹅对象放到其中
    List<Penguin> penguins=new ArrayList<Penguin>();
    
    penguins.add(penguin);
    penguins.add(penguin2);
    penguins.add(penguin3);
    //3.输出集合中企鹅的数量
    System.out.println("共计有"+penguins.size()+"只企鹅");
    
    //4.通过遍历集合显示
    for (int i = 0; i < penguins.size(); i++) {
      Penguin pg=(Penguin)penguins.get(i);
      System.out.println(pg.getName()+"\t"+pg.getSex());
    }
    //5.删除集合中哲哲企鹅
    penguins.remove(penguin3);
    
    //6.判断集合中是否还存在哲哲企鹅
    if (penguins.contains(penguin3)) {
      System.out.println("存在哲哲企鹅");
    }else {
      System.out.println("不存在哲哲企鹅");
    }
    System.out.println();
    //7.使用iterator迭代遍历
    System.out.println("使用iterator遍历");
    Iterator<Penguin> its=penguins.iterator();
    while (its.hasNext()) {
      Penguin pg =its.next();
      System.out.println("名字"+pg.getName()+"\t性别"+pg.getSex());
      
    }
    System.out.println();
    //8.使用foreach遍历
    System.out.println("使用foreach遍历");
    for (Penguin pg : penguins) {
      System.out.println("名字"+pg.getName()+"\t性别"+pg.getSex());
    }

  }

}

02.LinkedList集合类

 

package cn.day001;


import java.util.LinkedList;


//测试LinkedList的多个特殊方法
public class Test2 {

  public static void main(String[] args) {
    //1.创建多个企鹅对象
        Penguin penguin=new Penguin("楠楠","Q仔");
        
        Penguin penguin2=new Penguin("花花","Q妹");
        
        Penguin penguin3=new Penguin("哲哲","Q妹");
        
        //2.创建Arraylist集合对象并把2个企鹅对象放到其中
        //List<Penguin> penguins=new ArrayList<Penguin>();
        LinkedList<Penguin> penguins=new LinkedList<Penguin>();
        
        penguins.add(penguin);
        penguins.add(penguin2);
        penguins.add(penguin3);
        //3.输出集合中企鹅的数量
        System.out.println("共计有"+penguins.size()+"只企鹅");
        
        //4.查看集合中第一只企鹅的昵称
        Penguin firstpenguins=penguins.getFirst();
        System.out.println("第一只企鹅的昵称是:"+firstpenguins.getName());
        
        //5.查看集合中最后一只企鹅的昵称
        Penguin lastpenguins=penguins.getLast();
        System.out.println("最后一只企鹅的昵称是:"+lastpenguins.getName());
        
        //6.删除第一只企鹅和最后一只企鹅
        penguins.removeFirst();
        penguins.removeLast();
        
        System.out.println("删除后企鹅数"+penguins.size());


  }

}

2.Map接口

     

01.HashMap集合类

package cn.day002;

import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Scanner;
import java.util.Set;

//上机2 根据宠物昵称查找宠物  上机3 使用iterator迭代遍历
public class Test {

  public static void main(String[] args) {
    Map<String, String> pet=new HashMap<String, String>();
    
    pet.put("嘻嘻", "狗狗");
    pet.put("哈哈", "企鹅");
    pet.put("呵呵", "猫猫");
    
    Scanner input=new Scanner(System.in);
    
    System.out.println("请输入宠物昵称:");
    String name=input.next();
    if (pet.containsKey(name)) {
      String petname=pet.get(name);
      System.out.println(name+"对应的宠物"+petname);
    }else {
      System.out.println("对不起,没有此昵称对应的宠物");
    }
    
    System.out.println();
    //使用iterator迭代遍历
    System.out.println("使用iterator遍历");
    Set<String> keys=pet.keySet();//取出所有的key的值
    Iterator<String> it=keys.iterator();//获取Iteratoer对象
    while (it.hasNext()) {
      String key = (String) it.next();//取出key值
      String pets=pet.get(key);//根据key取出对应的值
      System.out.println("key值:"+key+"\tvalue值:"+pets);
    }

  }

}

以上这篇深入剖析java中的集合框架就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 带你深入了解java-代理机制

    带你深入了解java-代理机制

    Java 有两种代理方式,一种是静态代理,另一种是动态代理。如果我们在代码编译时就确定了被代理的类是哪一个,那么就可以直接使用静态代理;如果不能确定,那么可以使用类的动态加载机制,在代码运行期间加载被代理的类这就是动态代理
    2021-08-08
  • mybatis使用foreach语句实现IN查询(三种)

    mybatis使用foreach语句实现IN查询(三种)

    这篇文章主要介绍了mybatis使用foreach语句实现IN查询(三种),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-12-12
  • SpringBoot整合Quartz实现定时任务详解

    SpringBoot整合Quartz实现定时任务详解

    这篇文章主要介绍了Java 任务调度框架 Quartz,Quartz是OpenSymphony开源组织在Job scheduling领域又一个开源项目,完全由Java开发,可以用来执行定时任务,类似于java.util.Timer。,下面我们来学习一下关于 Quartz更多的详细内容,需要的朋友可以参考一下
    2022-08-08
  • Spring BeanFactory工厂使用教程

    Spring BeanFactory工厂使用教程

    Spring的本质是一个bean工厂(beanFactory)或者说bean容器,它按照我们的要求,生产我们需要的各种各样的bean,提供给我们使用。只是在生产bean的过程中,需要解决bean之间的依赖问题,才引入了依赖注入(DI)这种技术
    2023-02-02
  • java外部类与内部类简介

    java外部类与内部类简介

    这篇文章简单介绍了java外部类与内部类,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-12-12
  • 如何批量测试Mybatis项目中的Sql是否正确详解

    如何批量测试Mybatis项目中的Sql是否正确详解

    这篇文章主要给大家介绍了关于如何批量测试Mybatis项目中Sql是否正确的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-12-12
  • java插入排序和希尔排序实现思路及代码

    java插入排序和希尔排序实现思路及代码

    这篇文章主要介绍了插入排序和希尔排序两种排序算法,文章通过代码示例和图解详细介绍了这两种排序算法的实现过程和原理,需要的朋友可以参考下
    2025-03-03
  • Spring @Bean注解深入分析源码执行过程

    Spring @Bean注解深入分析源码执行过程

    随着SpringBoot的流行,我们现在更多采用基于注解式的配置从而替换掉了基于XML的配置,所以本篇文章我们主要探讨基于注解的@Bean以及和其他注解的使用
    2023-01-01
  • Java Date(日期)对象进行格式化的思路详解

    Java Date(日期)对象进行格式化的思路详解

    Date类是经常会使用到的一个用来处理日期、时间的一个类。Date类是在java.util包下的Date类,这篇文章主要介绍了Java Date(日期)对象如何进行格式化呢,需要的朋友可以参考下
    2022-09-09
  • Java ThreadLocal详解_动力节点Java学院整理

    Java ThreadLocal详解_动力节点Java学院整理

    ThreadLocal,很多地方叫做线程本地变量,也有些地方叫做线程本地存储,本文会详细的介绍一下,有兴趣的可以了解一下
    2017-06-06

最新评论