- 浏览: 68890 次
- 性别:
- 来自: 杭州
文章分类
最新评论
Map(和Collection<E>一样都是集合框架的顶层接口)
|--Hashtable:底层是哈希表数据结构,不可以用null对象作为键或值。它是线程同步的。
|--HashMap:底层是哈希表。允许使用null键null值,该集合是不同步的,效率高,将Hashtable替代。
|--TreeMap:底层是二叉树数据结构。线程不同步,可以用于给Map集合中的键进行排序。
Map和Set很像,其实,Set底层使用了Map集合。
Map<K, V>:K-此映射所维护的键的类型,V-映射值的类型。
Map集合的特点:该集合存储键值对。一对一对往集合里面存,而且要保证键的唯一性。
以下是Map集合中的共性方法:
1.添加:V put(K key, V value)用相同的键添加值,会覆盖原来的值,每次添加返回原来键所对应的值; void putAll(Map<? extends K, ? extends V> m);
2.删除:void clear(); V remove(Object key);
3.判断:boolean containsKey(Object key); boolean containsValue(Object value);boolean isEmpty();
4.获取:V get(Object key)可以通过get方法的返回值来判断一个键值对是否存在; int size(); Collection<V> values();
两个重要的方法(Map集合的两种取出方式):
Set<Map.Entry<K, V>> entrySet():返回此映射中包含的映射关系的Set视图。而这个映射关系的数据类型就是Map.Entry。获得关系对象Map.Entry后,就可以通过Map.Entry中getKey和getValue方法获得键和值。
Set<K> keySet():返回此映射中包含的键的Set视图。因为Set具备迭代器,所有可以用迭代方式取出所有的键,再根据get方法,获取每一个键对应的值。
interface Map<K, V> { public static interface Entry<K ,V> { // 只有接口处于处于成员变量的位置,才可以用static修饰 } } class HashMap implements Map<K, V> { class HashEntry implements Map.Entry<K, V> { } }
如果某个类需要创建多个对象,最好实现Comparable<E>接口(具备自然顺序),覆写hashCode()和equals()方法 。
/* 练习:获取某个字符串中的字母出现的次数 什么时候使用Map集合?当数据之间存在着映 射关系时,就要先想到Map集合 */ import java.util.Map; import java.util.Set; import java.util.TreeMap; public class TreeMapDemo { public static void main(String[] args) { charCount("dgadfhfsdghrsahfswrteurirwxvnxmxmxmbxhahaf"); } public static void charCount(String str) { char[] chs = str.toCharArray(); TreeMap<Character, Integer> treeMap = new TreeMap<Character, Integer>(); Integer temp; int count = 0; for (int i=0; i<chs.length; i++) { if((temp = treeMap.get(chs[i])) != null) { count = temp; } count++; treeMap.put(chs[i], count); count = 0; } //(1)从Map集合中的第一种取出方式:entrySet() System.out.println("--------------first---------------------"); Set<Map.Entry<Character, Integer>> treemapEntry = treeMap.entrySet(); for (Map.Entry<Character, Integer> me : treemapEntry){ Character character = me.getKey(); Integer integer = me.getValue(); System.out.print(character + "(" + integer + ")"); } System.out.println("\n" + "--------------second---------------------"); //(1)从Map集合中的第一种取出方式: keySet() Set<Character> ketSet = treeMap.keySet(); for (Character character : ketSet) { Integer integer = treeMap.get(character); System.out.print(character + "(" + integer + ")"); } } }Map扩展知识
Map集合被使用是因为具备映射关系
Map<K, Map<K1, V1>>
Map<K, Collection<T>>
上面是一个一对多映射关系,第二种形式在开发中比较常见。
-----------------------分----------割-------------线---------------
集合框架中的工具类:
(1)Collections:集合工具类
1. public static <T extends Comparable<? super T>> void sort(List<T> list);//默认排序
2. public static <T> void sort(List<T>, Comparator<? super T> c);// 自定义排序,利用比较器
3. public static <T extends Object & Comparable<? super T>> T max(Collection<? extends T> coll)
4. binarySearch();
5. static <T> void fill(List<? super T> list, T obj); // 用obj替代集合中的元素
6. reverseOrder(),返回一个相反的比较器,直接查文档,这个类中有很多有用的静态方法。
7.<T> T[] toArray(T[] a);//集合变数组,
1. 传入的形参数组到底应该定义多长呢?当传入的形参数组长度小于集合的size,那么该方法内部会创建一个新的数组。它的长度刚刚好是集合的size。 当传入的形参数组长度大于集合的size,那么就不会创建新的数组。就使用传进来的数组。
2. 为什么要将集合变成数组?为了限定对元素的操作。不需要进行增删了。
(2)Arrays:数组工具类
1. asList():将数组变成List集合,这样可以使用集合的思想和方法来操作数组中的元素。注意:将数组变成集合,不可以使用集合的增删方法,因为数组的长度是固定的。如果数组中的元素都是对象,那么变成集合时,数组中的元素就直接转成集合中的元素。如果数组中的元素都是基本类型,那么会将该数组作为集合中的元素存在。
2. 其他方法可以看文档
增强for循环(JDK 1.5):为了简化书写,但是会有局限性,即只能获取元素,但是不能对集合进行操作。但是迭代器除了遍历,还可以进行remove集合中的元素。如果是用ListIterator,还可以在遍历过程中进行增删改操作。要使用foreach语句,需要实现Iterable<T>接口
可变参数:JDK 1.5 版本出现的新特性,其实是数组参数的简写形式,不用每一次都手动的建立数组对象,只要将要操作的元素作为参数传递即可,隐式将这些参数封装成了数组。在使用时注意:可变参数一定要定义在参数列表的最后面。
静态导入:import static 导入的是某一类中的所有静态成员。
发表评论
-
Java中的正则表达式学习笔记
2013-04-02 21:40 853关于正则表达式的定义可以看维基百科中的解释——正则 ... -
关于JVM的一些知识点
2013-03-26 14:22 729分享一篇介绍JVM的文章。 -
Java多线程学习
2013-03-26 10:27 0/* 开启三个子线程,id分别为0,1,2。写一个程序输出0 ... -
Java集合框架(2)
2012-12-06 19:17 944|--Set:元素是无序(存入 ... -
Java集合中迭代实现(foreach语句)
2012-12-06 12:29 1897对于集合的一个基本的操作利用foreach语句遍历集合以处 ... -
Java中如何重写equals()方法
2012-11-28 18:45 890/* 对于equals()的实现(重写,继承于Objec ... -
Java中关于引用类型的赋值
2012-11-28 10:07 0Assignment statements. An a ... -
Java集合框架(1)
2012-11-29 22:04 728集合是存储对象最 ... -
Java多线程之生产者与消费者
2012-11-20 18:34 0生产者与消费者 -
String,StringBuffer和StringBuilder
2012-11-21 15:18 1231(1)String类用于描述字符串事物。它提供很多方 ... -
Java多线程(2)
2012-11-20 16:36 623... -
Java的字符流和字节流
2011-12-09 17:35 569IO分两种流字节流 InputStream OutputStr ... -
Windows下JDK环境变量配置
2012-11-17 21:44 769给下链接:http://docs.oracle.com/jav ... -
Java多线程(1)
2012-11-18 20:33 8261.首先我们明确一 ...
相关推荐
Java集合框架是Java编程语言中的一个核心组成部分,它为存储、管理和操作对象提供了一套统一的接口和类。本文将深入解析Java集合框架的各个方面,包括Collection、List、Set和Map,以及它们的相关实现和使用原理。 ...
6.java集合框架.zip6.java集合框架.zip6.java集合框架.zip6.java集合框架.zip6.java集合框架.zip6.java集合框架.zip6.java集合框架.zip6.java集合框架.zip6.java集合框架.zip6.java集合框架.zip6.java集合框架.zip6....
xmind格式的Java集合框架学习导图,包括Collection接口/Map接口以及具体实现类。 同样包含大厂面试题,也在导图中有所体现。 能学到什么: 更加成体系的知识框架,更加全面的、系统的知识。 思维导图: 思维导图具有...
### Java集合框架详解 #### 一、Java集合框架概述 Java集合框架是Java标准库的重要组成部分,它提供了存储和操作对象的各种数据结构。通过使用集合框架,开发人员可以轻松地管理不同类型的数据集,并且能够利用...
### Java集合框架总结 #### 一、Java集合框架概述 Java集合框架是Java标准库的一部分,它提供了一系列的接口和类来存储和操作各种类型的对象集合。这些接口和类遵循一致的设计模式,使得开发人员可以方便地管理和...
集合是将多个元素组成一个单元的...Java集合框架,为我们提供了一套性能优良、使用方便的接口和类,我们不必再重新发明轮子,只需学会如何使用它们,就可以处理实际应用中出现的问题了Java集合框架位于java.util包中
Java集合框架是Java编程语言中一个至关重要的组成部分,它提供了数据结构和算法的抽象,使得开发者可以方便地存储和管理各种类型的数据。本篇将详细探讨Java集合框架的基础知识,包括核心接口、类的层级结构以及Java...
面渣逆袭 Java 集合框架篇.pdf面渣逆袭 Java 集合框架篇.pdf面渣逆袭 Java 集合框架篇.pdf面渣逆袭 Java 集合框架篇.pdf面渣逆袭 Java 集合框架篇.pdf面渣逆袭 Java 集合框架篇.pdf面渣逆袭 Java 集合框架篇.pdf面渣...
JAVA学习 Java集合框架.ppt
Java集合框架是Java编程语言中一个非常重要的组成部分,它提供了一组高效的数据结构和操作这些数据结构的方法。泛型则是Java在J2SE 5.0版本引入的一个特性,极大地提高了代码的类型安全性和可读性。下面我们将深入...
Java集合框架是Java编程语言中一个至关重要的组成部分,它为数据存储和操作提供了丰富的类库。泛型是Java 5引入的一项创新特性,极大地增强了集合框架的安全性和效率。本讲解将深入探讨这两个主题,以及与之相关的...
本文档为本人学习 java 集合框架期间的学习总结笔记,希望对新学习的朋友有所帮助和参考价值。本人java 开发时间不是太长,可能存在不完善或不对之处,欢迎指正!
一个扑克游戏,用于Java集合框架练习一个扑克游戏,用于Java集合框架练习 一个扑克游戏,用于Java集合框架练习一个扑克游戏,用于Java集合框架练习 一个扑克游戏,用于Java集合框架练习一个扑克游戏,用于Java集合...
Java集合框架是Java编程语言中的核心部分,它提供了一组高效、灵活的数据结构,使得开发者可以方便地存储和管理各种类型的数据。Java集合框架主要包括两大类:Collection和Map。 Collection接口是所有单值容器的父...
Java集合List集合Set集合Map集合Collection和collections工具类的框架图
List set ArraryList Map java集合框架笔记 基于Array的List,其实就是封装了Array所不具备的一些功能方便我们使用
Java集合框架是Java编程语言中的一个核心组成部分,它为数据存储和操作提供了丰富的类库。在Java中,集合框架主要包括接口(如List、Set、Queue)和实现这些接口的类(如ArrayList、HashSet、LinkedList等)。这个...