学习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 源码分析 容量.负载因子和树化 精选 ...
随机推荐
- HDU 2126 Buy the souvenirs (01背包,输出方案数)
题意:给出t组数据 每组数据给出n和m,n代表商品个数,m代表你所拥有的钱,然后给出n个商品的价值 问你所能买到的最大件数,和对应的方案数.思路: 如果将物品的价格看做容量,将它的件数1看做价值的话, ...
- Delphi的时间处理
这几天因为自己要学习编写一个小程序中要用到一些时间处理.就在网上搜集一些教材学习到一般的应用,做个笔记,加深印象. 用上Delphi中相应的函数,Delphi的时间处理起来还是很容易的. Delphi ...
- UVA 10635 Prince and Princess
题意描述:有两个长度分别为p+1和q+1的序列,每个元素中的各个元素互不相同.都是1~n^2之间的整数,求A和B的最长公共子序列.(2<=n<=250,1<=p,q<=n^2) ...
- iOS多线程的初步研究(五)-- 如何让NSURLConnection在子线程中运行
可以有两个办法让NSURLConnection在子线程中运行,即将NSURLConnection加入到run loop或者NSOperationQueue中去运行. 前面提到可以将NSTimer手动加 ...
- SQL技术内幕-5 比较特殊 insert into 数据的写法
---比较特殊,第一次看到这种写法,记录下来 create table Student --学生成绩表 ( id int, --主键 Grade int, --班级 Score int --分数 ) ...
- App接口设计
关于APP接口设计 http://blog.csdn.net/gebitan505/article/details/37924711/
- 最大 / 小的K个数
在<剑指offer>上看到的,而且Qunar去年的校招笔试也考了这题,今天晚上去西电腾讯的宣讲会,来宣讲的学长也说他当时一面的时候面试官问了“一亿个数据的最大的十个数”的面试题.今晚就写写 ...
- jmeter 302请求测试
需求,测试url: http://test.123.com/123.action,请求该url之后会进行302跳转,判断跳转的页面是不是http://www.haha.com. 这个其实本质还是普通 ...
- MYSQL 当有两条重复数据时 保留一条
delete from test where id in (select id from (select max(id) as id,count(text) as count from test ...
- qt resize() 和 geometry()
resize(),设置的部件客户区的大小.只有当该部件被show后才生效,即geomery() 返回的才是 resize() 的客户区大小.