`

Java学习系列(八)Java面向对象之集合框架详解(下)

 
阅读更多

今天接着上次的来讲,主要谈谈Map。下面先看一张图:

Map里面存的东西是:每个数据项都是key-value对组成。假如我们把value当成是key的“附属物”,Map存储key-value对时,只要考虑key的存储即可,key存储之后,value跟着key即可。再进一步:如果只管Map里面的key,并把所有的key收集起来 ----- 就变成了Set。所以Map与Set是一一对应的。通过查看源码我们可以发现,HashSet底层是由HashMap实现的。HashMap会根据key的hashCode()方法的返回值来计算key的存、取位置。

HashMap怎样才算两个key重复?
a)通过equals方法比较返回tue;
b)两个key的hashCode()返回值相等。
要求自定义类的hashCode()和equals()方法是一致的(即方法中所用到的关键属性要一致)。

TreeMap要求key必须是可比较大小的。
a)自然排序:要求所有的key实现Comparable接口;
b)定制排序:要求创建TreeMap时提供一个Comparator接口。

TreeMap怎样才算两个key重复?
a)通过compareTo()比较大小时返回0,就表明两个元素相等。

Hashtable与HashMap的区别:
a.Hashtable从JDK1.0就有的,尽量少用。
b.Hashtable不允许使用null作为key、value,但HashMap允许。
c.Hashtable是线程安全的。--线程不安全的性能好。

举例说明1(HashMap的使用):

 

class Apple {
	private String color;
	private double weight;

	public Apple(String color, double weight) {
		this.color = color;
		this.weight = weight;
	}

	@Override
	public String toString() {
		return "Apple[" + color + "," + weight + "]";
	}

	@Override
	public boolean equals(Object obj) {
		if (this == obj) {
			return true;
		}
		if (obj != null && obj.getClass() == Apple.class) {
			Apple apple = (Apple) obj;
			return this.weight == apple.weight
					&& this.color.equals(apple.color);
		}
		return false;
	}

	@Override
	public int hashCode() {
		return color.hashCode() + 13 * (int) weight;
	}
}

public class Test {

	public static void main(String[] args) {
		HashMap<Apple, Double> apples = new HashMap<Apple, Double>();
		apples.put(new Apple("红色", 3.5), 3.4);
		apples.put(new Apple("红色", 4.5), 3.4);
		apples.put(new Apple("黄色", 3.5), 3.4);
		apples.put(new Apple("红色", 3.5), 6.8);//覆盖掉了第一个key
		System.out.println(apples);
	}
}


举例说明2(TreeMap的使用):

 

 

public class Test {

	public static void main(String[] args) {
		TreeMap<String, Double> score = new TreeMap<String, Double>(
				new Comparator<String>() {
					@Override
					public int compare(String o1, String o2) {
						return o1.length() > o2.length() ? 1 : o1.length() < o2
								.length() ? -1 : 0;
					}
				});
		score.put("abd", 89.0);
		score.put("aaaa", 78.0);
		score.put("aa", 90.0);
		score.put("ds", 78.0);
		System.out.println(score.size());
		System.out.println(score);
	}
}


结束语

 

通过上一篇的学习,我们可以发现其实Set和Map用法几乎是一样的,把Map看成是Collection子接口Set的一个分支即可。

今天就讲到这里,明天开始学习Java的异常处理进制。

 

分享到:
评论

相关推荐

    Java面向对象编程实例详解

    "Java面向对象编程实例详解2.txt"和"Java面向对象编程实例详解.txt"可能包含了详细的讲解和示例代码,涵盖了类的创建、对象的实例化、访问控制、构造函数、抽象类和接口、异常处理、集合框架等方面的知识。...

    Java面向对象程序设计耿祥义版课件

    二、Java面向对象特性详解 1. 抽象:抽象是将共同特征抽取出来形成类的过程,Java通过抽象类和接口实现抽象。 2. 构造器:构造器用于初始化新创建的对象,Java中的构造器与类同名且无返回值。 3. 访问控制修饰符:...

    Java基础教程完整版

    Java学习系列(八):Java面向对象之集合框架详解(下) 本章节主要讲解Java集合框架的下半部分,包括Queue接口、Stack接口、ArrayList类、LinkedList类、HashMap类等。 Java学习系列(九):Java面向对象之异常...

    java面向对象基础、高级pdf讲义

    Java面向对象基础与高级知识点详解 Java是一种广泛使用的面向对象编程语言,它的设计哲学是“一切皆对象”。本讲义将全面深入地介绍Java面向对象的基础概念和高级特性,帮助开发者从初学者到精通者逐步提升技能。 ...

    Java集合类详解总结

    ### Java集合类详解总结 在Java编程中,集合框架...Java集合框架的设计充分体现了面向对象编程的原则,提供了灵活且强大的数据结构支持,使得开发者能够更加专注于业务逻辑的实现,而无需过多关注底层数据结构的细节。

    java(面向对象编程)课件

    【Java面向对象编程课件详解】 Java是一种广泛使用的高级编程语言,以其面向对象特性而闻名。面向对象编程(Object-Oriented Programming,OOP)是Java的核心,它将现实世界中的概念映射到代码中,使得程序设计更加...

    朱福喜面向对象与Java程序设计课后答案详解

    面向对象与Java程序设计是软件开发领域中的核心概念,朱福喜的著作深入浅出地讲解了这些主题,为开发者提供了宝贵的资源。本教程重点围绕Java语言和面向对象编程的基本概念,结合课后习题答案,帮助读者巩固理解并...

    完整版 Java初级教程 Java语言程序设计 第8章 集合框架(共19页).ppt

    【Java初级教程】Java语言程序设计的第8章聚焦于集合框架,这是一个核心概念,用于组织和管理数据。集合框架是一套接口和类的体系,提供了处理数据集合的方法。本章的目标是掌握ArrayList、HashSet和HashMap的使用,...

    Java集合框架实现及应用实例-核心数据结构详解与案例演示

    适合人群:对于具有一定编程知识特别是面向对象概念认知的基础程序员或者正在学习/研究Java这门语言的人。 使用场景及目标:为用户提供了一个清晰的学习路径,以便能够快速入门理解并且有效应用集合框架于实际开发...

    Java2编程详解

    2. **面向对象编程**:Java是完全面向对象的语言,它支持类、对象、封装、继承、多态等面向对象特性。理解类和对象的概念,学会如何设计和实现类,以及掌握继承和多态的应用,对于编写可维护、可扩展的代码至关重要...

    Java2编程详解(Special_Edition_Using_Java)

    《Java2编程详解》这本书是Java编程领域的一部经典之作,特别版的使用指南深入剖析了Java 2平台的核心技术和编程方法。这本书旨在帮助开发者掌握Java语言的基础以及高级特性,从而能够有效地进行软件开发。 首先,...

    java编程思想详解

    此外,Java的集合框架,如ArrayList、HashMap等,为数据存储和操作提供了便利。 Java从C/C++发展而来,但它在内存管理和安全性上有显著改进。Java的垃圾回收机制自动管理内存,避免了内存泄漏,而它的类型检查和...

    Java面向对象程序设计模拟试题

    根据给定的文件信息,我们可以总结出以下关于Java面向对象程序设计的重要知识点: ### Java面向对象基础 #### 1. 对象的创建与释放 - **创建对象**: 在Java中,使用`new`关键字来创建一个新的对象实例。例如,创建...

    Java集合排序及java集合类详解(Collection、List、Map、Set).pdf

    Java集合框架的设计理念是基于面向对象的设计模式,它遵循了开闭原则、单一职责原则、依赖倒置原则等设计原则。 本文详细解释了Java集合框架的实现原理、Collection、List、Set、Map四个接口的定义和实现原理,...

    java2编程详解 java学习

    Java2编程详解主要涵盖Java语言的核心概念和技术,包括但不限于语法基础、面向对象编程、类与对象、接口与抽象类、异常处理、输入/输出(I/O)系统、集合框架、多线程、网络编程以及Java的高级特性。以下是对这些主题...

    Java2编程详解.rar

    1. **面向对象编程**:Java是一种完全面向对象的编程语言,支持类、接口、继承、封装和多态等概念。理解这些基础是学习Java的起点。 2. **类和对象**:Java中的所有代码都基于类,类是创建对象的蓝图。了解如何定义...

    java2编程详解(special_edition_using_java)

    3. **数组与集合框架**:介绍如何使用数组存储和操作数据,并深入探讨Java的集合框架,如ArrayList、LinkedList、HashSet、HashMap等容器类的使用。 4. **异常处理**:讲解Java中的异常处理机制,如何捕获和处理...

    最新Java 编程详解

    2. **集合框架**:Java集合框架是处理对象数组的重要工具,包括List(如ArrayList和LinkedList)、Set(如HashSet和TreeSet)、Map(如HashMap和TreeMap)以及接口如Iterable和Iterator。 3. **异常处理**:Java中...

    Java案例详解1精通Java项目开发

    1. **Java编程基础**:学习Java语言的基本语法,包括变量、数据类型、控制结构(如if-else,switch,循环)、类与对象、封装、继承和多态等面向对象特性。这些都是Java项目开发的基础。 2. **Java集合框架**:Java...

Global site tag (gtag.js) - Google Analytics