Map以及其子类
package com.Map; import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set; /*
* 引入Map
* 我们知道集合是为了存储对象的。Collection集合的特点是存储一些对象,里面的每一个值都是一个对象
* 当遇到这样的情况:
* 比如:学校中的学生,如何查询呢?根据学号查询学生
* 如果使用的是Collection保存的数据,就需要遍历collection所有学生,然后查找对应学号的学生的内容
* 如果是使用的Map集合的话,可以特别将学生id提出来,因为它是唯一的,作为键,然后遍历所有键,找到
* 对应键,然后表示出键所对应的学生信息
* 我感觉,使用Map存储数据可以简化查询时间。
*
* Map<K,V> 映射项(键值对)
* key是不可以重复的,map的数据结构只与key有关,value是该key中存储的值
*
* Map<K,V>的方法
*
* 增、 改:
* Object put(key,value)//返回的是原来该key中的value
* putAll(Map<? extends K,? extends V> m) 将m中的所有映射加入到此map,如果有key相同的则替换操作
* 删:
* clear()
* remove(Object key) //删除指定key的键值对
* 判断:
* containsKey(Object key)
* containsValue(Object key)
* equals(Object o)
* hashCode()
* isEmpty()
* 获取:
* Set<Map.Entry<K,V>> entrySet() 返回此映射中包含的映射关系的Set视图
* get(Object key) 获取Map中对应key的属性值
* Set<k> keySet() 返回此映射中的key的Set集合
* Collection<V> values() 返回此映射中包含的值的Collection视图
* size() 返回此映射中的键-值映射关系数量
*/
public class Study01 {
public static void main(String[] args) {
Map<Integer,String> map=new HashMap<Integer,String>();
Map<Integer,String> map1=new HashMap<Integer,String>();
//put(K,V)
System.out.println("put:"+map.put(1, "guodaxia"));
map.put(1, "guoxiaoxia");
map1.put(1, "aao");
map1.put(2,"QAQ");//QAQ 哭,卖萌 //putAll
map.putAll(map1);
System.out.println(map);//重写了toString //remove(Object key)
// System.out.println("remove:"+map.remove(1));
// System.out.println(map); //clear()
// map.clear();
// System.out.println(map); System.out.println(map.containsKey(1));
System.out.println(map.containsValue("QAQ")); //get(key)
System.out.println(map.get(1));; //keySet()
Set<Integer> keys=map.keySet();
for(int i: keys){
System.out.println(i+"---"+map.get(i));
}
//values()
Collection<String> l=map.values();
for(Iterator<String> it=l.iterator();it.hasNext();){
System.out.println(it.next());
} //Set<Map.Entry<K,V>> entrySet() 返回此映射中包含的映射关系的Set视图
//Map.Entry<K,V>是一个接口,它的实现类存储了一对映射值key--value,你将它理解成为一个存储键值对的对象
//它的几个方法:
// getKey()
// getValue()
// toString()
// setValue()
// hashCode()
// equals()
// 它和Collection中的迭代器类似,可以说成是Map集合的特有迭代器,所以也可以通过这个修改集合内容
Set<Entry<Integer,String>> s= map.entrySet();
for(Entry<Integer,String> ss:s){
System.out.println(ss.getKey()+"\t"+ss.getValue());
}
for(Entry<Integer,String> ss:s){
if(ss.getKey()==2){
ss.setValue("haha");
}
}
System.out.println(map); } } package com.Map; /*
*
* hashMap 哈希表结构
*
* linkedHashMap 底层是哈希表和链表,有序唯一
*
* TreeMap
* 键是红黑树结构 有特定顺序,唯一
* 排序和唯一与排序方式有关
*自然排序是实体类实现Comparable接口
*排序器实现。
* 创建排序器,排序器是一个类,实现Comparator接口
* 在创建TreeMap时候构造方法导进去排序器
*/
public class Study02 { }
Properties:
package com.Map; import java.io.FileInputStream;
import java.io.IOException;
import java.util.Properties;
import java.util.Set; /*
* Properties
* Hashtable类的子类,Properties 类表示了一个持久的属性集
* 它不是一个泛型类,默认存储的键值对都是Object类型的。
* 功能:
* Properties首先可以用到Hashtable的基本功能:存储键值对
* 特殊的方法:
* String getProperty(String key, String defaultValue)
* getProperty(String key)
* setProperty(String key,String value)
* Set<String> stringPropertyNames()
* getProperty有关的其实是类似装饰模式一样,在Properties中重新定义了什么setProperty方法,内部使用的是Hashtable的泛型。
* Properties最主要的特点就是可以和流对象和xml对象进行交互
* void list(PrintStream out) 将属性列表输出到指定的输出流。
* void list(PrintWriter out) 将属性列表输出到指定的输出流。
* void load(InputStream inStream) 从输入流中读取属性列表(键和元素对)。
* void load(Reader reader) 按简单的面向行的格式从输入字符流中读取属性列表(键和元素对)。
* void loadFromXML(InputStream in) 将指定输入流中由 XML 文档所表示的所有属性加载到此属性表中。
* void store(OutputStream out, String comments) 以适合使用 load(InputStream) 方法加载到 Properties 表中的格式,将此 Properties 表中的属性列表(键和元素对)写入输出流。
* void store(Writer writer, String comments) 以适合使用 load(Reader) 方法的格式,将此 Properties 表中的属性列表(键和元素对)写入输出字符。
* void storeToXML(OutputStream os, String comment) 发出一个表示此表中包含的所有属性的 XML 文档。
* void storeToXML(OutputStream os, String comment, String encoding) 使用指定的编码发出一个表示此表中包含的所有属性的 XML 文档。
* 参数comment,指的是写入对象中的描述
*/
public class PropertiesDemo {
public static void main(String[] args) throws IOException {
// test01();
// test02();
test03();
}
public static void test03() throws IOException{
// Properties prop=new Properties();
// prop.put("it001", "java");
// prop.put("it002", "hello");
// prop.put("it003", "world");
//// prop.list(System.out);
//// OutputStream os=new FileOutputStream("prop.txt");
// FileWriter fw=new FileWriter("prop.txt");
// prop.store(fw, "我是一匹狼");//解析中文可能乱码,使用字符流都乱码了
//
// prop.storeToXML(new FileOutputStream("prop.xml"), "Youxi");
// fw.close(); //--------------------------------------
Properties prop=new Properties();
prop.load(new FileInputStream("prop.txt"));//注意:解析的文本中格式应该为键值对的格式
Set<String> set=prop.stringPropertyNames();
for(String s:set){
System.out.println(s+"----"+prop.getProperty(s));
}
}
public static void test01(){
Properties prop=new Properties();
prop.put("it001", "java");
prop.put("it002", "hello");
prop.put("it003", "world"); Set<Object> set=prop.keySet();
for(Object obj:set){
System.out.println(obj+"-------"+prop.get(obj));
}
}
public static void test02(){
Properties prop=new Properties();
prop.setProperty("java", "eclipes");
prop.setProperty("c", "c-free");
prop.setProperty("C#", "x-code"); System.out.println("java"+"-----"+prop.getProperty("java"));
System.out.println("android"+"----"+prop.getProperty("android", "eclipes"));
Set<String> set=prop.stringPropertyNames();
for(String s: set){
System.out.println(s+"------"+prop.getProperty(s));
}
} }
Map以及其子类的更多相关文章
- java:Map借口及其子类HashMap五,identityHashMap子类
java:Map借口及其子类HashMap五,identityHashMap子类 了解:identityHashMap子类 一般情况下,标准的Map,是不会有重复的key值得value的,相同的key ...
- java:Map借口及其子类HashMap四
java:Map借口及其子类HashMap四 使用非系统对象作为key,使用匿名对象获取数据 在Map中可以使用匿名对象找到一个key对应的value. person: public class Ha ...
- ava:Map借口及其子类HashMap三
ava:Map借口及其子类HashMap三 HashMap常用子类(异步非安全线程,性能高: Hashtable:同步的安全线程,性能低) map(HashMap)中的key,value可以通过 Se ...
- java:Map借口及其子类HashMap二
java:Map借口及其子类HashMap二 重点:所有的集合必须依赖Iterator输出 Map<String, Integer> map = new HashMap<String ...
- java:Map借口及其子类
java:Map借口及其子类 Conllection是保存单值最大得父接口(即没有key的数据),那么Map是保存的内容是一对键值的数据,即KEY->VALUE的形式保存,如电话簿等. Map常 ...
- Map接口及其子类
Map接口操作的是一对对象,即二元偶对象,Map接口中的每一个元素都使用"key--value"的形式存储在集合中. SortedMap接口是排序接口,仅仅要是实现了此接口的子类, ...
- 【Java学习笔记】Map
Map: 一次添加一对元素,也称为双列集合. 而Collection,一次添加一个元素,称为单列集合. 常用方法: 1.添加 value put(key,value); 返回前一个与k ...
- JAVA基础学习之 Map集合、集合框架工具类Collections,Arrays、可变参数、List和Set集合框架什么时候使用等(4)
package com.itcast.test20140113; import java.util.ArrayList; import java.util.Arrays; import java.ut ...
- Map排序——按key排序,按value排序
注:转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/5959279.html 上一篇博文谈到了集合类的自定义排序方式,那么进一步扩展开来,与集合同等重要的Map有 ...
随机推荐
- NIO 01 (转)
本文转自:http://www.cnblogs.com/littlehann/p/3720396.html 目录 1. NIO.NIO.2简介 2. NIO中的关键技术 1. NIO.NIO.2简介 ...
- AndroidStudio 使用AIDL
http://blog.csdn.net/ducklikejava/article/details/51559244 Android Studio中写的一个AIDL的小DEMO. 步骤很繁琐,本来不准 ...
- Docker-初始docker
一.什么是Docker Docker 在容器的基础上,进行了进一步的封装,从文件系统.网络互联到进程隔离等等,极大的简化了容器的创建和维护.使得 Docker 技术比虚拟机技术更为轻便.快捷. 下面的 ...
- 如何安装python .whl包
1.最简单的办法是是python -mpip install *** 配置过环境变量也可以 pip install *** 但是由于墙的原因,很大概率失败.可以找到对应网站下载对应的.whl 2.下载 ...
- 20145322《Java程序设计》第5次实验报告
20145322<Java程序设计>第5次实验报告 实验内容 1.根据所学内容,编写代码实现服务器与客户端 2.掌握密码技术的使用 3.设计安全传输系统,客户端中输入明文,利用DES算法加 ...
- 20145329《Java程序设计》第十周学习总结
教材学习内容总结 网络编程 • 网络编程就是在两个或两个以上的设备(例如计算机)之间传输数据.程序员所作的事情就是把数据发送到指定的位置,或者接收到指定的数据 1.网络概述 • 网络编程的实质:两个( ...
- linux目录结构及文件权限
安装banner用到的指令: 第一步: sudo apt-get update 第二步: sudo apt-get install sysvbanner 成功了 创建新用户指令: sudo addus ...
- caffe平台快速搭建:caffe+window7+vs2013
caffe平台快速搭建:caffe+window7+vs2013 1.caffe-master下载 采用微软提供Windows工具包(caffe-master),下载地址:https://github ...
- 混合开发的大趋势之一React Native之页面跳转
转载请注明出处:王亟亟的大牛之路 最近事情有点多,没有长时间地连贯学习,文章也停了一个多礼拜,愧疚,有时间还是继续学习,继续写! 还是先安利:https://github.com/ddwhan0123 ...
- java类库字符串操作
在java类库中,java给我们提供了字符串几个特别的操作,分别是String,Stringbuffer,Stringbuilder等.下面就对这几个类做一个简单的介绍.首先,我们先了解一下Strin ...