学习java之HashMap和TreeMap
HashMap和TreeMap是Map接口的两种实现,ArrayDeque和LinkedList是Queue接口的两种实现方式。下面的代码是我今天学习这四个数据结构之后写的。还是不熟悉,TreeMap中的其余构造方法我还没有实现,真搞不懂同样的数据结构用java却写的这么麻烦。。
package regexp; import java.util.Collection;
import java.util.Comparator;
import java.util.HashMap;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.Map;
import java.util.NoSuchElementException;
import java.util.Queue;
import java.util.Set;
import java.util.TreeMap; public class test {
public static void main(String args[]) throws NoSuchElementException{
//Queue接口的实现
Queue<Integer> q = new LinkedList<Integer>(); //通过LinkedList实现Queue接口
// Queue<Integer> q = new ArrayDeque<Integer>(); //通过LinkedList实现Queue接口
for(int i=0;i<10;i++) {
q.add(i+1);
}
System.out.printf("%d%n", q.size());
q.element();
System.out.printf("%d%n", q.element());
if(q.isEmpty()) {
System.out.printf("%s%n", "The ArrayDeque is empty");
} else {
System.out.printf("%d%n", q.peek());
} System.out.printf("%d%n", q.size());
Integer first = q.remove(),last = q.remove();
System.out.printf("%d %d%n",first,last);
System.out.printf("%d%n", q.size()); //Map接口的实现
Map<Integer,String> mp = new HashMap<Integer,String>();
mp.put(1, "111");
mp.put(2, "222");
String tt = mp.put(3, "333");
System.out.println(tt); //null
String tmp = mp.put(1, "444");
System.out.printf("%s%n",tmp); //
System.out.printf("The size of the map is %d.%n", mp.size()); //
for(int i=0;i<mp.size();i++) {
System.out.printf("id=%d, value=%s%n",i+1,mp.get(i+1));
}
mp.remove(1); //delete key=1 Set<Integer> keys = mp.keySet();
//foreach
for(Integer num : keys) {
System.out.printf(" %d", num);
}
//iterator
Iterator<Integer> it1 = keys.iterator();
while(it1.hasNext()) {
System.out.printf(" %d", it1.next());
} Collection<String> coll = mp.values();
//foreach
for(String s : coll) {
System.out.printf(" %s", s);
}
//iterator
Iterator<String> it2 = coll.iterator();
while(it2.hasNext()) {
System.out.printf(" %s", it2.next());
} Set<Map.Entry<Integer, String>> ss = mp.entrySet();
//foreach
for(Map.Entry<Integer, String> pair : ss) {
Integer num = pair.getKey();
String value = pair.getValue(); System.out.printf(" %s '+' id=%d, value=%s", pair,num,value);
}
//iterator
Iterator<Map.Entry<Integer, String>> it3 = ss.iterator();
while(it3.hasNext()) {
System.out.printf(" %s", it3.next());
} //TreeMap
TreeMap<Integer,String> treemp = new TreeMap<Integer,String>(new myComparator());
treemp.put(111,"111");treemp.put(222, "222");treemp.put(112,"112");treemp.put(113, "113");
for(Map.Entry<Integer, String> pair : treemp.entrySet()) {
Integer num = pair.getKey();
String str = pair.getValue();
System.out.printf(" %d:%s ", num,str);
}
}
} class myComparator implements Comparator<Integer> {
public myComparator() {
}
public int compare(Integer a,Integer b) {
return a.compareTo(b);
} }
下面是运行出来的结果,友友们可以对照着看,有没有初学者呀,come here and leave a message please!
10
1
1
10
1 2
8
null
111
The size of the map is 3.
id=1, value=444
id=2, value=222
id=3, value=333
2 3 2 3 222 333 222 333 2=222 '+' id=2, value=222 3=333 '+' id=3, value=333 2=222 3=333 111:111 112:112 113:113 222:222
学习java之HashMap和TreeMap的更多相关文章
- Java中HashMap,LinkedHashMap,TreeMap的区别[转]
原文:http://blog.csdn.net/xiyuan1999/article/details/6198394 java为数据结构中的映射定义了一个接口java.util.Map;它有四个实现类 ...
- Java中HashMap和TreeMap的区别深入理解
首先介绍一下什么是Map.在数组中我们是通过数组下标来对其内容索引的,而在Map中我们通过对象来对对象进行索引,用来索引的对象叫做key,其对应的对象叫做value.这就是我们平时说的键值对. Has ...
- java中HashMap,LinkedHashMap,TreeMap,HashTable的区别
java为数据结构中的映射定义了一个接口java.util.Map;它有四个实现类,分别是HashMap Hashtable LinkedHashMap 和TreeMap Map主要用于存储健值对,根 ...
- Java中HashMap和TreeMap的区别
什么是Map集合在数组中我们是通过数组下标来对其内容索引的,而在Map中我们通过对象来对对象进行索引,用来索引的对象叫做key,其对应的对象叫做value.这就是我们平时说的键值对. HashMap ...
- Java 集合系列14之 Map总结(HashMap, Hashtable, TreeMap, WeakHashMap等使用场景)
概要 学完了Map的全部内容,我们再回头开开Map的框架图. 本章内容包括:第1部分 Map概括第2部分 HashMap和Hashtable异同第3部分 HashMap和WeakHashMap异同 转 ...
- 【Java】Map杂谈,hashcode()、equals()、HashMap、TreeMap、LinkedHashMap、ConcurrentHashMap
参考的优秀文章: <Java编程思想>第四版 <Effective Java>第二版 Map接口是映射表的结构,维护键对象与值对象的对应关系,称键值对. > hashco ...
- Java开发笔记(六十六)映射:HashMap和TreeMap
前面介绍了两种集合的用法,它们的共性为每个元素都是唯一的,区别在于一个无序一个有序.虽说往集合里面保存数据还算容易,但要从集合中取出数据就没那么方便了,因为集合居然不提供get方法,没有get方法怎么 ...
- Java 容器 & 泛型:五、HashMap 和 TreeMap的自白
Writer:BYSocket(泥沙砖瓦浆木匠) 微博:BYSocket 豆瓣:BYSocket Java 容器的文章这次应该是最后一篇了:Java 容器 系列. 今天泥瓦匠聊下 Maps. 一.Ma ...
- 杨晓峰-Java核心技术-9 HashMap Hashtable TreeMap MD
目录 第9讲 | 对比Hashtable.HashMap.TreeMap有什么不同? 典型回答 考点分析 知识扩展 Map 整体结构 有序 Map HashMap 源码分析 容量.负载因子和树化 精选 ...
随机推荐
- arcgis地图操作的资料URL,以供以后查阅
更改Arcgis Web应用程序的端口号8399: http://help.arcgis.com/zh-cn/arcgisserver/10.0/help/arcgis_server_java_hel ...
- 基础DOM和CSS操作(二)
元素样式操作 元素样式操作包括了直接设置CSS样式.增加CSS类别.类别切换.删除类别这几种操作方法.而在整个jQuery使用频率上来看,CSS样式的操作也是极高的,所以需要重点掌握. CSS操作方法 ...
- lintcode: 旋转图像
旋转图像 给定一个N×N的二维矩阵表示图像,90度顺时针旋转图像. 解题 顺时针旋转90度 就是 上下翻转,再主对角对折 public class Solution { /** * @param ma ...
- Android核心分析之十九电话系统之GSMCallTacker
GSMCallTracker在本质上是一个Handler.<IGNORE_JS_OP> 1.jpg (1.52 KB, 下载次数: 1) 下载附件 保存到相册 2012-3-22 11: ...
- WPF之RichTextBox丢失光标仍然选中文本
描述:开发中完成了一个类似于Word的悬浮工具栏功能,选中文本之后可以自动弹出一个工具栏.可以修改字体.字体大小等功能,问题来了,我发现当去进行操作的时候原本选中的RichTextBox的内容的颜色会 ...
- POSIX、XNU
POSIX 表示可移植操作系统接口(Portable Operating System Interface ,缩写为 POSIX ),POSIX标准定义了操作系统应该为应用程序提供的接口标准,是IEE ...
- java多线程使用HibernateSession 时报 No session 的解决办法(转)
服务端新开多线程使用HibernateSession 杜绝No session 新起的线程需要绑定Hibernate session,才能在新线程中使用事务和延迟加载等功能,否则会曝出no sessi ...
- MyBatis学习总结_07_Mybatis缓存
一.MyBatis缓存介绍 正如大多数持久层框架一样,MyBatis 同样提供了一级缓存和二级缓存的支持 一级缓存: 基于PerpetualCache 的 HashMap本地缓存,其存储作用域为 Se ...
- SQL Server ->> 生成Numbers辅助表
if object_id('MyDB.dbo.Numbers') is not null drop table MyDB.dbo.Numbers go use [MyDB] go create tab ...
- [c/c++]指针数组 pk 数组指针
首先强调 指针数组归根结底是个数组:数组指针归根结底是个指针. 数组指针 以int (*int)[10]为例 ()的优先级大于[],因此首先它是一个指针,它指向一个数组,数组的维数是10.因此数组指针 ...