Java的集合框架
01.为什么要使用集合框架?
解析:如果并不知道程序运行时会需要多少对象,或者需要更复杂方式存储对象,那么可以使用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的集合框架最全详解(图) 前言:数据结构对程序设计有着深远的影响,在面向过程的C语言中,数据库结构用struct来描述,而在面向对象的编程中,数据结构是用类来描述的,并且包含有对该数据结构操作 ...
- java.util 集合框架集合
java的集合框架为程序提供了一种处理对象组的标准方式.设计了一系列标准泛型接口: ⑴Collection ()接口,扩展了Iterable接口,位于集合层次结构的顶部,因此所有的集合都实现Colle ...
- Java基础——集合框架
Java的集合框架是Java中很重要的一环,Java平台提供了一个全新的集合框架.“集合框架”主要由一组用来操作对象的接口组成.不同接口描述一组不同数据类型.Java平台的完整集合框架如下图所示: 上 ...
- java的集合框架之一
java是一套很成熟的东西,很多商用的东西都喜欢用它,用的人多,稳定.不过一般也不怎么说起它,因为太常见了,私下里说,写java应用层得就像农民工,每一处都是搭积木,根据设计师的东西如何优雅地搭好积木 ...
- 浅谈Java的集合框架
浅谈Java的集合框架 一. 初识集合 重所周知,Java有四大集合框架群,Set.List.Queue和Map.四种集合的关注点不同,Set 关注事物的唯一性,List 关注事物的索引列表,Q ...
- java的集合框架set 和map的深入理解
Java的集合框架之Map的用法详解 Map有两种比较常用的实现:HashMap 和 TreeMap. HashMap: HashMap 也是无序的,也是按照哈希编码来排序的,允许使用null 值和n ...
- Java 高级-集合框架
参考资料 参考 HashMap 类似 C++ 中的 STL 标准模板库,Java 也在 java.util 包中封装了一套常用数据结构及其算法,称为集合框架.所有的集合框架都包含如下内容: 接口:代表 ...
- Java 之 集合框架(JCF)
1.集合框架 a.框架:为了实现某一目的或功能,而预先提供的一系列封装好的.具有继承或实现关系的类与集合 b.集合:①定义:Java中对一些数据结构和算法进行封装,即封装(集合也是一种对象) ②特点: ...
- 十五、Java基础---------集合框架体系以及List
在介绍集合之前先说一下数组,正如我们所知,数组是某一类型数据的集合,强调的是数据,而且必须单一:集合框架的不同之处在于存储的数据类型没有任何限制,既可以存储基本数据类型(会自动提升为相应的包装类)也可 ...
随机推荐
- 命令行下使用javah命令生成.h文件,出现“错误: 无法访问android.app.Activity 找不到android.app.Activity的类文件”的解决方法
在学习NDK中,当我在项目的bin/classes目录下使用javah命令生成头文件时,出现了“错误: 无法访问android.app.Activity 找不到android.app.Activity ...
- 15个实用的CSS在线实例教程
前端技术可以说是必须学习的一个技术,现在做网站都需要懂DIV.CSS,在国内很多企业招网页设计师都要求会写基本的前端代码,所以前端技术是 必须了解的,对网页设计师本身也有帮助,今天向大家推荐一些不错的 ...
- 【原】Configuring Oracle Data Guard In Physical Standby Database
作者:david_zhang@sh [转载时请以超链接形式标明文章] http://www.cnblogs.com/david-zhang-index/p/5042640.html参照文档:https ...
- vbox导入虚拟电脑网卡MAC问题
vbox导入虚拟电脑之后,需要"重新初始化所有网卡的MAC地址". centos需要做以下几步操作: 1.删除文件"/etc/udev/rules.d/70-persis ...
- 【迁移学习】2010-A Survey on Transfer Learning
资源:http://www.cse.ust.hk/TL/ 简介: 一个例子: 关于照片的情感分析. 源:比如你之前已经搜集了大量N种类型物品的图片进行了大量的人工标记(label),耗费了巨大的人力物 ...
- ionic 通过下载apk升级App
上篇通过更新文件升级APP,如果遇到了比如更新插件之类的问题,上篇是无法解决的,所以为了解决这个问题,需要下载apk文件升级APP. 1.配置文件如下:{'appVersion':'1.0.0', ...
- Java 8的新并行API - 魅力与炫目背后
这是一篇译文,原文链接见这里. 本文同时发表在ImportNew上,转载请注明出处. 我很擅长同时处理多项任务.就算是在写这篇博客的此刻,我仍然在为昨天在聚会上发表了一个让大家都感到诧异的评论而觉得尴 ...
- java io系列15之 DataOutputStream(数据输出流)的认知、源码和示例
本章介绍DataOutputStream.我们先对DataOutputStream有个大致认识,然后再深入学习它的源码,最后通过示例加深对它的了解. 转载请注明出处:http://www.cnblog ...
- Android 学习笔记之ContentProvider实现数据共享....
PS:最近听老师说打算让我参与企业的app制作,让我加快学习的进度...好吧,貌似下周还有考试...貌似实验室这个app也要做...暂时不管了...那就只能加快进度了,感觉略微的有点激动和紧张,总算是 ...
- Velocity魔法堂系列一:入门示例
一.前言 Velocity作为历史悠久的模板引擎不单单可以替代JSP作为Java Web的服务端网页模板引擎,而且可以作为普通文本的模板引擎来增强服务端程序文本处理能力.而且Velocity被移植到不 ...
