深入剖析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中的集合框架就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 基于Servlet实现技术问答网站系统

    基于Servlet实现技术问答网站系统

    这篇文章主要为大家详细介绍了基于Servlet实现技术问答网站系统,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-04-04
  • Java中的Sentinel持久化规则启动

    Java中的Sentinel持久化规则启动

    这篇文章主要介绍了Java中的Sentinel持久化规则启动,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-08-08
  • Java使用modbus4j实现modbus tcp通讯

    Java使用modbus4j实现modbus tcp通讯

    Modbus是由Modicon(现为施耐德电气公司的一个品牌)在1979年发明的,是全球第一个真正用于工业现场的总线协议,本文主要介绍了java如何使用modbus4j实现modbus tcp通讯,感兴趣的可以了解下
    2023-12-12
  • springboot tomcat最大线程数与最大连接数解析

    springboot tomcat最大线程数与最大连接数解析

    这篇文章主要介绍了springboot tomcat最大线程数与最大连接数解析,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-06-06
  • Java中使用Jedis操作Redis的示例代码

    Java中使用Jedis操作Redis的示例代码

    本篇文章主要介绍了Java中使用Jedis操作Redis的示例代码,具有一定的参考价值,有兴趣的可以了解一下。
    2016-12-12
  • Java完美实现2048小游戏

    Java完美实现2048小游戏

    本文给大家分享的是一则根据网友的代码改编的2048小游戏的源码,个人认为已经非常完美了,推荐给大家,有需要的小伙伴可以参考下。
    2015-03-03
  • Java线程的新建和就绪状态实例分析

    Java线程的新建和就绪状态实例分析

    这篇文章主要介绍了Java线程的新建和就绪状态,结合实例形式分析了java线程的创建、调用等相关操作技巧,需要的朋友可以参考下
    2019-09-09
  • Idea 2020.2安装MyBatis Log Plugin 不可用的解决方法

    Idea 2020.2安装MyBatis Log Plugin 不可用的解决方法

    小编在使用时发现Idea 2020.2 MyBatis Log Plugin 收费了,这个可以替代用,小编特此把解决方案分享到脚本之家平台供大家参考,感兴趣的朋友一起看看吧
    2020-11-11
  • Spring bean 四种注入方式详解

    Spring bean 四种注入方式详解

    这篇文章主要介绍了Spring bean的实例化和IOC依赖注入详解,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2021-07-07
  • Springboot整合Swagger3全注解配置(springdoc-openapi-ui)

    Springboot整合Swagger3全注解配置(springdoc-openapi-ui)

    本文主要介绍了Springboot整合Swagger3全注解配置(springdoc-openapi-ui),文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-03-03

最新评论