学习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 源码分析 容量.负载因子和树化 精选 ...
随机推荐
- jQuery实现表格隔行换色且感应鼠标高亮行变色
jQuery插件实现表格隔行换色且感应鼠标高亮行变色 http://www.jb51.net/article/41568.htm jquery 操作DOM的基本用法分享http://www.jb51. ...
- iOS-CAShapelayer
1.CAShapeLayer继承至CALayer,可以使用CALayer的所有属性值2.CAShapeLayer需要与贝塞尔曲线配合使用才有意义3.使用CAShapeLayer与贝塞尔曲线可以实现不在 ...
- JS获取Url参数的通用方法
//获取URL中的参数 function request(paras) { var url = location.href.replace('#', ''); var paraString = url ...
- BZOJ 1143 1143: [CTSC2008]祭祀river 最长反链
1143: [CTSC2008]祭祀river Description 在遥远的东方,有一个神秘的民族,自称Y族.他们世代居住在水面上,奉龙王为神.每逢重大庆典, Y族都会在水面上举办盛大的祭祀活动. ...
- JDK安装(windows/linux)
双击安装...安装之后需要进行一些相关的配置工作...下面是我自己总结的安装和配置步骤: (1)非Win7系统 第一步:安装jdk,下载地址:http://www.oracle.com/technet ...
- JAVA数据库连接池实现(转)
连接池的管理用了了享元模式,这里对连接池进行简单设计. 一.设计思路 1.连接池配置属性DBbean:里面存放可以配置的一些属性 2.连接池接口IConnectionPool:里面定义一些基本的获取连 ...
- iOS开发--泛型
一. 泛型函数 1.单一占位符泛型函数 下面就使用一个经典案例:两个数值进行交换.来使用泛型,写一个通用的函数,这个函数的功能就是交换两个变量的值.在Swift中不允许类型隐式转换,也就是说,如果你定 ...
- iOS 开发--动画
在iOS开发中,制作动画效果是最让开发者享受的环节之一.一个设计严谨.精细的动画效果能给用户耳目一新的效果,吸引他们的眼光 —— 这对于app而言是非常重要的.我们总是追求更为酷炫的实现,如果足够仔细 ...
- 290. Word Pattern
题目: Given a pattern and a string str, find if str follows the same pattern. Here follow means a full ...
- Java Map各遍历方式的性能比较
1. 阐述 对于Java中Map的遍历方式,很多文章都推荐使用entrySet,认为其比keySet的效率高很多.理由是:entrySet方法一次拿到所有key和value的集合:而keySet拿到的 ...