深入剖析java中的集合框架

作者:jingxian 时间:2022-04-27 18:48:16 

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

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

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

02.集合框架的内容

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

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

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

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

java集合框架简图:

 

深入剖析java中的集合框架

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

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

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

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

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

下面开始介绍:

1.List接口 深入剖析java中的集合框架    

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集合类

 深入剖析java中的集合框架


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接口

     深入剖析java中的集合框架

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 * ame=pet.get(name);
     System.out.println(name+"对应的宠物"+ * ame);
   }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,集合框架
0
投稿

猜你喜欢

  • MyBatis插入数据返回主键的介绍

    2023-10-26 03:15:21
  • Spring源码解析之Configuration

    2021-11-01 06:05:04
  • Java实现插入排序,希尔排序和归并排序

    2022-02-24 18:45:52
  • Android开发之拖动条和评分组件用法分析

    2022-01-15 02:55:18
  • 用C#实现启动另一程序的方法实例

    2023-06-20 12:05:43
  • c# 引用类型和值类型

    2023-10-11 08:20:48
  • 以实例简介Java中线程池的工作特点

    2023-08-11 23:04:19
  • 50 道Java 线程面试题(经典)

    2023-11-23 19:47:37
  • java实现超市管理系统

    2022-06-23 13:19:06
  • C#中RSA加密与解密的实例详解

    2022-09-01 15:43:06
  • Jmeter如何基于命令行运行jmx脚本

    2023-11-01 14:16:24
  • c#实现图片二值化例子(黑白效果)

    2023-02-19 11:52:46
  • Spring Security基于散列加密方案实现自动登录功能

    2022-09-19 01:10:22
  • C#简单实现防止多个程序运行的方法

    2021-07-31 04:36:27
  • 基于javaWeb 项目SSM配置要点及可能遇到的问题和解决方法

    2023-10-27 21:45:16
  • Flutter开发中的路由参数处理

    2023-06-21 04:27:48
  • c# 实现汉诺塔游戏

    2022-11-21 01:02:57
  • java实现在线聊天系统

    2021-07-30 08:20:54
  • Java实现角色扮演游戏的示例代码

    2023-03-31 19:41:45
  • Intellij IDEA 2020.3 配置教程详解

    2023-07-01 21:34:23
  • asp之家 软件编程 m.aspxhome.com