热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Map常用的方法事例

packagecom.hu.Map;importstaticorg.junit.Assert.*;importjava.awt.RenderingHints.Key;importjava.u

package com.hu.Map;

import static org.junit.Assert.*;

import java.awt.RenderingHints.Key;
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;

import org.junit.Test;

import com.hu.cool.Person;

public class TestMap {

@Test
public void test() {
/*Collection接口
* Map接口
* |------------HashMap Map的主要实现类
* |------------LinkedHashMap
* |------------TreeMap
* |------------Hashtable
* ----properties
*
*/
Map map=new HashMap();
//Object put(Object Key ,object value)向map中添加一个元素
map.put("aa", 123);
map.put(123, "aa");
map.put("bb", 456);
map.put(null, null);
System.out.println(map.size());
//hashMap Tree是由set存放的不能够重复,所以如果重复的key是存放不进去的
//value是由Collection来存放的,可以重复;而一个key value对是一个Entry所有entru 是有set存放不可重复
//如果有两个相同的值,则相当于更新用新的代替旧的。

map.remove(null);//按照某个key的值进行删除
System.out.println(map);
Object val=map.get("aa");
System.out.println(val);
}
@Test
public void test2(){
/*
* 如何遍历Map
* Set keyset()
* Collection Values()
* Set entryset()
*
*/
Map map=new HashMap();
map.put("aa", 123);
map.put(123, "aa");
map.put("bb", 456);
map.put(null, null);
map.put(new Person("AA", 18), "Myu");

//1,遍历key
Set set=map.keySet();
for(Object obj:set){
System.out.println(obj);
}
//2,遍历value
Collection collection=map.values();
for (Object object : collection) {
System.out.println(object);
}
//3,遍历entry
//方法一:如何遍历key-value对
Set set2=map.keySet();
for(Object object:set2){
System.out.println(object+"---------->"+map.get(object));
}
//实现遍历的方法二
Set set3=map.entrySet();
for(Object object:set3){
Map.Entry entry=(Entry)object;
System.out.println(entry);
}

}

}

***********************************************************

LInkedhashset()的使用

@Test
public void test3(){
//linkedhashset 遍历的时候按照插入的顺序来遍历,但是插入删除的时候速度普遍比较慢因为还要维护链表
Map map=new LinkedHashMap();
map.put("123", "AA");
map.put(45, "BB");
map.put("cu", 45);

Set set=map.entrySet();

for(Object object:set){
Map.Entry entry=(Entry) object;
System.out.println(object);
}
}

*************************************************

@Test
public void testding(){
Comparator comparator=new Comparator() {

@Override
public int compare(Object o1, Object o2) {
if(o1 instanceof Person2 && o2 instanceof Person2){
Person2 p1=(Person2) o1;
Person2 p2=(Person2) o2;
Integer i=p1.getAge().compareTo(p2.getAge());
return i;
}
return 0;
}
};
Map map=new TreeMap(comparator);
map.put(new Person2("muYongyuan", 14), 99);
map.put(new Person2("anyue", 13), 110);
map.put(new Person2("guangxin", 15), 93);
map.put(new Person2("peng", 12), 114);

Set set=map.entrySet();
for(Object object:set){
Map.Entry entry=(Map.Entry)object;
System.out.println(entry);
}
}

*************************************************

compareTo()放大调用的时候必须是对象类型的。


推荐阅读
  • 本文整理了Java面试中常见的问题及相关概念的解析,包括HashMap中为什么重写equals还要重写hashcode、map的分类和常见情况、final关键字的用法、Synchronized和lock的区别、volatile的介绍、Syncronized锁的作用、构造函数和构造函数重载的概念、方法覆盖和方法重载的区别、反射获取和设置对象私有字段的值的方法、通过反射创建对象的方式以及内部类的详解。 ... [详细]
  • Spring特性实现接口多类的动态调用详解
    本文详细介绍了如何使用Spring特性实现接口多类的动态调用。通过对Spring IoC容器的基础类BeanFactory和ApplicationContext的介绍,以及getBeansOfType方法的应用,解决了在实际工作中遇到的接口及多个实现类的问题。同时,文章还提到了SPI使用的不便之处,并介绍了借助ApplicationContext实现需求的方法。阅读本文,你将了解到Spring特性的实现原理和实际应用方式。 ... [详细]
  • Oracle seg,V$TEMPSEG_USAGE与Oracle排序的关系及使用方法
    本文介绍了Oracle seg,V$TEMPSEG_USAGE与Oracle排序之间的关系,V$TEMPSEG_USAGE是V_$SORT_USAGE的同义词,通过查询dba_objects和dba_synonyms视图可以了解到它们的详细信息。同时,还探讨了V$TEMPSEG_USAGE的使用方法。 ... [详细]
  • 本文介绍了Python爬虫技术基础篇面向对象高级编程(中)中的多重继承概念。通过继承,子类可以扩展父类的功能。文章以动物类层次的设计为例,讨论了按照不同分类方式设计类层次的复杂性和多重继承的优势。最后给出了哺乳动物和鸟类的设计示例,以及能跑、能飞、宠物类和非宠物类的增加对类数量的影响。 ... [详细]
  • JDK源码学习之HashTable(附带面试题)的学习笔记
    本文介绍了JDK源码学习之HashTable(附带面试题)的学习笔记,包括HashTable的定义、数据类型、与HashMap的关系和区别。文章提供了干货,并附带了其他相关主题的学习笔记。 ... [详细]
  • 本文介绍了在iOS开发中使用UITextField实现字符限制的方法,包括利用代理方法和使用BNTextField-Limit库的实现策略。通过这些方法,开发者可以方便地限制UITextField的字符个数和输入规则。 ... [详细]
  • 模板引擎StringTemplate的使用方法和特点
    本文介绍了模板引擎StringTemplate的使用方法和特点,包括强制Model和View的分离、Lazy-Evaluation、Recursive enable等。同时,还介绍了StringTemplate语法中的属性和普通字符的使用方法,并提供了向模板填充属性的示例代码。 ... [详细]
  • HashMap的相关问题及其底层数据结构和操作流程
    本文介绍了关于HashMap的相关问题,包括其底层数据结构、JDK1.7和JDK1.8的差异、红黑树的使用、扩容和树化的条件、退化为链表的情况、索引的计算方法、hashcode和hash()方法的作用、数组容量的选择、Put方法的流程以及并发问题下的操作。文章还提到了扩容死链和数据错乱的问题,并探讨了key的设计要求。对于对Java面试中的HashMap问题感兴趣的读者,本文将为您提供一些有用的技术和经验。 ... [详细]
  • Netty源代码分析服务器端启动ServerBootstrap初始化
    本文主要分析了Netty源代码中服务器端启动的过程,包括ServerBootstrap的初始化和相关参数的设置。通过分析NioEventLoopGroup、NioServerSocketChannel、ChannelOption.SO_BACKLOG等关键组件和选项的作用,深入理解Netty服务器端的启动过程。同时,还介绍了LoggingHandler的作用和使用方法,帮助读者更好地理解Netty源代码。 ... [详细]
  • 本文介绍了iOS数据库Sqlite的SQL语句分类和常见约束关键字。SQL语句分为DDL、DML和DQL三种类型,其中DDL语句用于定义、删除和修改数据表,关键字包括create、drop和alter。常见约束关键字包括if not exists、if exists、primary key、autoincrement、not null和default。此外,还介绍了常见的数据库数据类型,包括integer、text和real。 ... [详细]
  • Whatsthedifferencebetweento_aandto_ary?to_a和to_ary有什么区别? ... [详细]
  • 本文介绍了RxJava在Android开发中的广泛应用以及其在事件总线(Event Bus)实现中的使用方法。RxJava是一种基于观察者模式的异步java库,可以提高开发效率、降低维护成本。通过RxJava,开发者可以实现事件的异步处理和链式操作。对于已经具备RxJava基础的开发者来说,本文将详细介绍如何利用RxJava实现事件总线,并提供了使用建议。 ... [详细]
  • 本文讨论了微软的STL容器类是否线程安全。根据MSDN的回答,STL容器类包括vector、deque、list、queue、stack、priority_queue、valarray、map、hash_map、multimap、hash_multimap、set、hash_set、multiset、hash_multiset、basic_string和bitset。对于单个对象来说,多个线程同时读取是安全的。但如果一个线程正在写入一个对象,那么所有的读写操作都需要进行同步。 ... [详细]
  • 本文分析了Wince程序内存和存储内存的分布及作用。Wince内存包括系统内存、对象存储和程序内存,其中系统内存占用了一部分SDRAM,而剩下的30M为程序内存和存储内存。对象存储是嵌入式wince操作系统中的一个新概念,常用于消费电子设备中。此外,文章还介绍了主电源和后备电池在操作系统中的作用。 ... [详细]
  • 本文介绍了pack布局管理器在Perl/Tk中的使用方法及注意事项。通过调用pack()方法,可以控制部件在显示窗口中的位置和大小。同时,本文还提到了在使用pack布局管理器时,应注意将部件分组以便在水平和垂直方向上进行堆放。此外,还介绍了使用Frame部件或Toplevel部件来组织部件在窗口内的方法。最后,本文强调了在使用pack布局管理器时,应避免在中间切换到grid布局管理器,以免造成混乱。 ... [详细]
author-avatar
小猪jieao_229
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有