设为首页收藏本站
网站公告 | 这是第一条公告
     

 找回密码
 立即注册
缓存时间20 现在时间20 缓存数据 和聪明人交流,和靠谱的人恋爱,和进取的人共事,和幽默的人随行。晚安!

和聪明人交流,和靠谱的人恋爱,和进取的人共事,和幽默的人随行。晚安!

查看: 1290|回复: 3

深入剖析java中的集合框架

[复制链接]

  离线 

TA的专栏

  • 打卡等级:即来则安
  • 打卡总天数:15
  • 打卡月天数:0
  • 打卡总奖励:229
  • 最近打卡:2023-08-27 09:16:13
等级头衔

等級:晓枫资讯-列兵

在线时间
0 小时

积分成就
威望
0
贡献
25
主题
25
精华
0
金钱
319
积分
60
注册时间
2023-8-13
最后登录
2025-8-25

发表于 2025-3-14 16:28:14 | 显示全部楼层 |阅读模式

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

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

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

02.集合框架的内容

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

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

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

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

java集合框架简图:

 

1.png

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

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

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

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

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

下面开始介绍:

1.List接口 

2.png
    

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 penguins=new ArrayList();
    
    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 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集合类

 

3.png

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 penguins=new ArrayList();
        LinkedList penguins=new LinkedList();
        
        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接口

     

4.png

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 pet=new HashMap();
    
    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 keys=pet.keySet();//取出所有的key的值
    Iterator 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中的集合框架就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持晓枫资讯。


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
晓枫资讯-科技资讯社区-免责声明
免责声明:以上内容为本网站转自其它媒体,相关信息仅为传递更多信息之目的,不代表本网观点,亦不代表本网站赞同其观点或证实其内容的真实性。
      1、注册用户在本社区发表、转载的任何作品仅代表其个人观点,不代表本社区认同其观点。
      2、管理员及版主有权在不事先通知或不经作者准许的情况下删除其在本社区所发表的文章。
      3、本社区的文章部分内容可能来源于网络,仅供大家学习与参考,如有侵权,举报反馈:点击这里给我发消息进行删除处理。
      4、本社区一切资源不代表本站立场,并不代表本站赞同其观点和对其真实性负责。
      5、以上声明内容的最终解释权归《晓枫资讯-科技资讯社区》所有。
http://bbs.yzwlo.com 晓枫资讯--游戏IT新闻资讯~~~

  离线 

TA的专栏

  • 打卡等级:偶尔看看
  • 打卡总天数:14
  • 打卡月天数:0
  • 打卡总奖励:172
  • 最近打卡:2025-03-19 19:19:21
等级头衔

等級:晓枫资讯-列兵

在线时间
0 小时

积分成就
威望
0
贡献
0
主题
0
精华
0
金钱
208
积分
36
注册时间
2023-2-2
最后登录
2025-3-19

发表于 2025-7-4 09:08:06 | 显示全部楼层
顶顶更健康!!!
http://bbs.yzwlo.com 晓枫资讯--游戏IT新闻资讯~~~

  离线 

TA的专栏

等级头衔

等級:晓枫资讯-列兵

在线时间
0 小时

积分成就
威望
0
贡献
0
主题
0
精华
0
金钱
11
积分
2
注册时间
2024-11-27
最后登录
2024-11-27

发表于 2025-8-13 16:39:39 | 显示全部楼层
感谢楼主,顶。
http://bbs.yzwlo.com 晓枫资讯--游戏IT新闻资讯~~~

  离线 

TA的专栏

  • 打卡等级:无名新人
  • 打卡总天数:1
  • 打卡月天数:0
  • 打卡总奖励:17
  • 最近打卡:2025-01-18 23:41:02
等级头衔

等級:晓枫资讯-列兵

在线时间
0 小时

积分成就
威望
0
贡献
0
主题
0
精华
0
金钱
32
积分
6
注册时间
2023-7-27
最后登录
2025-1-18

发表于 2025-8-26 03:25:30 | 显示全部楼层
路过,支持一下
http://bbs.yzwlo.com 晓枫资讯--游戏IT新闻资讯~~~
严禁发布广告,淫秽、色情、赌博、暴力、凶杀、恐怖、间谍及其他违反国家法律法规的内容。!晓枫资讯-社区
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

1楼
2楼
3楼
4楼

手机版|晓枫资讯--科技资讯社区 本站已运行

CopyRight © 2022-2025 晓枫资讯--科技资讯社区 ( BBS.yzwlo.com ) . All Rights Reserved .

晓枫资讯--科技资讯社区

本站内容由用户自主分享和转载自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。

如有侵权、违反国家法律政策行为,请联系我们,我们会第一时间及时清除和处理! 举报反馈邮箱:点击这里给我发消息

Powered by Discuz! X3.5

快速回复 返回顶部 返回列表