深入剖析java中的集合框架_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集合框架、java 集合类 深入详解、java集合深入学习、java集合框架,以便于您获取更多的相关知识。

时间: 2024-12-29 03:42:44

深入剖析java中的集合框架_java的相关文章

深入剖析java中String、StringBuffer、StringBuilder的区别_java

java中String.StringBuffer.StringBuilder是编程中经常使用的字符串类,他们之间的区别也是经常在面试中会问到的问题.现在总结一下,看看他们的不同与相同. 1. 可变与不可变 String类中使用字符数组保存字符串,如下就是,因为有"final"修饰符,所以可以知道string对象是不可变的. private final char value[]; StringBuilder与StringBuffer都继承自AbstractStringBuilder类,在

浅谈java中对集合对象list的几种循环访问_java

java中对集合对象list的几种循环访问的总结如下  1 经典的for循环  public static void main(String[] args) { List<String> list = new ArrayList(); list.add("123"); list.add("java"); list.add("j2ee"); System.out.println("=========经典的for循环======

程序猿的日常——Java中的集合列表

列表对于日常开发来说实在是太常见了,以至于很多开发者习惯性的用到数组,就来一个ArrayList,根本不做过多的思考.其实列表里面还是有很多玩法的,有时候玩不好,搞出来bug还得定位半天.所以这里就再啰嗦一下,整理下相关的内容. 基础知识 一般计算机相关的专业都应该学过数据结构,而很多的集合都是应用了经典的数据结构设计的.比如数组.栈.队列.链表.树等等,里面也会用到很多常见的查找或者排序算法,所以就先简单的回顾下. 数组 数组在c语言里面用的很广泛,刚开始学习的时候,整天的空指针和数组越界.后

java struts2-怎样利用Java 中的struts2框架实现数据库中用户登录功能?

问题描述 怎样利用Java 中的struts2框架实现数据库中用户登录功能? 在Action中LoginAction怎样写? 配置文件中怎样写? 总体实现能够使数据库中已经存在的用户凭自己的密码与用户名登录成功呢?数据库是Oracle数据库.

安卓开发-java中的spring框架是一个怎么样的框架,

问题描述 java中的spring框架是一个怎么样的框架, java中的spring框架是一个怎么样的框架, 在android开发当中有没有应用到呢 解决方案 spring最初是一个IoC框架,主要的作用是实现组件的管理.有时候我们希望程序中一些代码可以标准化并且被替换,比如一个管理系统底层可以使用SQL Server,也可以使用MySQL,那么我们编写两个符合接口的组件,Spring的作用是通过配置文件把需要的组件装配起来,比如得到一套支持mssql的系统,一套支持mysql的系统. 而主程序

java 中list集合中对象的声明周期

问题描述 java 中list集合中对象的声明周期 list集合中存放是是堆中的对象,但如果堆中的对象被回收后就变成了空?还是只要list集合存在就不会被回收?如果会被回收的话,怎样保证集合内的数据在list存在时长期有效??求大牛帮助

java中List集合及其遍历详解_java

1. 首先List<E>集合继承与Collection<E>,是一个接口.    ①  Collection (集合框架是JDK1.2版本出现的)    ②   list:是有序的,元素可以重复,以为该集合体系有索引.      经常用到的是实现该接口的ArrayList和LinkedList类    ③   Arraylist:  底层的数据结构使用的是数组结构,   特点: 查询速度很快,但是增删稍慢.线程不同步          LinkedList: 底层使用的是链表数据结

详谈java集合框架_java

1.为什么使用集合框架 当我们并不知道程序运行时会需要多少对象,或者需要更复杂方式存储对象--可以使用Java集合框架 2.Java集合框架包含的内容 接口:(父类)Collection接口下包含List(子类 )接口和Set(子类) 接口 List接口下又包含(ArrayList集合实现类和LinkedList集合实现类) Set接口下又包含(HashSet集合实现类和TreeSet集合实现类) 接口:(父类)Map接口下包含(HashMap集合实现类和TreeMap 集合实现类) *Coll

剖析Java中的事件处理与异常处理机制_java

一.事件处理其实,由事件处理这个名字自然就想到MFC中的消息响应机制,就我的体会,它们应该算是南桔北枳的情形吧,我怀疑Java中的事件处理这个"新瓶"应是装的MFC中的消息响应这个"旧酒".     所谓的"事件"即如键盘按键.鼠标点击等这类由动作或什么导致某个状态改变并需要对这个改变作相应响应的这类改变.我们可以将Java中的事件分为按钮.鼠标.键盘.窗口.其它事件这几大类.    事件处理模型  1.   基于继承的事件处理模型(JDK1.0