1. 云栖社区>
  2. >
  3. 正文

深入剖析java中的集合框架_java

作者:用户 来源:互联网 时间:2016-05-20 11:51:44

java集合框架

深入剖析java中的集合框架_java - 摘要: 本文讲的是深入剖析java中的集合框架_java, 解析:如果并不知道程序运行时会需要多少对象,或者需要更复杂方式存储对象,那么可以使用Java集合框架。 如果启用集合的删除方法,那么集合中所有元素的索引会自动维护。 集合完全弥补了数组的缺陷。 02.集合框架的内容  集合框架都包含三大块

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

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

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

02.集合框架的内容

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

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

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

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

java集合框架简图:

 

2016052016060020.png

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

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

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

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

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

下面开始介绍:

1.List接口 2016052016060021.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<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集合类

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

     2016052016060024.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<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集合框架,以便于您获取更多的相关知识。

弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率

40+云计算产品,6个月免费体验

稳定可靠、可弹性伸缩的在线数据库服务,全球最受欢迎的开源数据库之一

云服务器9.9元/月,大学必备