黑马程序员——java基础学习笔记——第九天
来源:互联网 发布:编程 儿童 编辑:程序博客网 时间:2024/05/20 19:18
------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
Map集合
一概述:
Map与Collection在集合框架中属并列存在,Map存储的是键值对,Map存储元素使用put方法,Collection使用add方法,Map集合没有直接取出元素的方法,而是先转成Set集合,在通过迭代获取元素Map集合中键要保证唯一性。
二Map常用方法:
添加、删除操作:Object put(Object key,Object value)Object remove(Object key)void putAll(Mapt)void clear()元视图操作的方法:Set keySet()Collection values()Set entrySet()元素查询的操作:Object get(Object key)boolean containsKey(Objectkey)boolean containsValue(Objectvalue)int size()boolean isEmpty()boolean equals(Object obj)import java.util.*;class MapDemo {public static void main(String[] args) {Map<String,String> map=new HashMap<String,String>();map.put("01","zhangsan1");map.put("02","zhangsan1");map.put("03","zhangsan1");System.out.println("containsKey:"+map.containsKey("02"));System.out.println("remove:"+map.remove("02"));System.out.println(map);}}
三HashMap:
允许使用null键和null值,与HashSet一样,不保证映射的顺序。HashMap 判断两个 key 相等的标准是:两个 key 通过 equals()方法返回 true,hashCode 值也相等。HashMap 判断两个 value相等的标准是:两个 value通过 equals()方法返回 true。
import java.util.*;class Student implements Comparable<Student>{private String name;private int age;Student(String name,int age){this.name=name;this.age=age;}public int compareTo(Student s){int num=new Integer(this.age).compareTo(new Integer(s.age));if(num==0)return this.name.compareTo(s.name);return num;}public int hashCode(){return name.hashCode()+age*34;}public boolean equals(Object obj){if(!(obj instanceof Student))throw new ClassCastException("类型不匹配");Student s=(Student)obj;return this.name.equals(s.name)&&this.age==s.age;}public String getName(){return name;}public int getAge(){return age;}public String toString(){return name+"::"+age;}}class MapTest {public static void main(String[] args) {HashMap<Student,String> hm=new HashMap<Student,String>();hm.put(new Student("lisi1",21),"beijing");hm.put(new Student("lisi2",22),"shanghai");hm.put(new Student("lisi3",23),"nanjing");hm.put(new Student("lisi4",24),"wuhan");/*第一种取出方式:keySetSet<Student> keySet=hm.keySet();Iterator<Student> it=keySet.iterator();while(it.hasNext()){Student stu=it.next();String addr=hm.get(stu);System.out.println(stu+"..."+addr);}*///第二种取出方式entrySetSet<Map.Entry<Student,String>> entrySet=hm.entrySet();Iterator<Map.Entry<Student,String>> iter=entrySet.iterator();while(iter.hasNext()){Map.Entry<Student,String> me =iter.next();Student stu=me.getKey();String addr=me.getValue();System.out.println(stu+"......."+addr);}}}四TreeMap:TreeMap存储 Key-Value对时,需要根据 key-value对进行排序。TreeMap 可以保证所有的Key-Value对处于有序状态。
TreeMap 的 Key 的排序:
自然排序:TreeMap 的所有的 Key 必须实现 Comparable接口,而且所有的Key应该是同一个类的对象,否则将会抛出ClasssCastException定制排序:创建 TreeMap 时,传入一个Comparator对象,该对象负责对TreeMap 中的所有 key 进行排序。此时不需要Map的 Key 实现 Comparable接口
TreeMap判断两个key相等的标准:两个key通过compareTo()方法或者compare()方法返回0。
若使用自定义类作为TreeMap的key,所属类需要重写equals()和hashCode()方法,且equals()方法返回true时,compareTo()方法应返回0。
五操作集合的工具类:
Collections 是一个操作Set、List 和 Map 等集合的工具类
Collections 中提供了一系列静态的方法对集合元素进行排序、查询和修改等操作,还提供了对集合对象设置不可变、对集合对象实现同步控制等方法
排序操作:(均为static方法)
查找、替换:reverse(List):反转 List 中元素的顺序shuffle(List):对 List集合元素进行随机排序sort(List):根据元素的自然顺序对指定List集合元素按升序排序sort(List,Comparator):根据指定的Comparator产生的顺序对List集合元素进行排序swap(List,int,int):将指定 list 集合中的 i 处元素和 j 处元素进行交换
Object max(Collection):根据元素的自然顺序,返回给定集合中的最大元素Object max(Collection,Comparator):根据 Comparator指定的顺序,返回给定集合中的最大元素Object min(Collection)Object min(Collection,Comparator)int frequency(Collection,Object):返回指定集合中指定元素的出现次数void copy(List dest,Listsrc):将src中的内容复制到dest中boolean replaceAll(Listlist,ObjectoldVal,ObjectnewVal):使用新值替换List对象的所有旧值
同步控制:
Collections 类中提供了多个synchronizedXxx() 方法,该方法可使将指定集合包装成线程同步的集合,从而可以解决多线程并发访问集合时的线程安全问题。
package com.atguigu.java;import java.util.ArrayList;import java.util.Arrays;import java.util.Collections;import java.util.List;import org.junit.Test;/* * 操作Collection以及Map的工具类:Collections * * 面试题:区分Collection与Collections * */public class TestCollections {/* * Object max(Collection):根据元素的自然顺序,返回给定集合中的最大元素Object max(Collection,Comparator):根据 Comparator 指定的顺序,返回给定集合中的最大元素Object min(Collection)Object min(Collection,Comparator)int frequency(Collection,Object):返回指定集合中指定元素的出现次数void copy(List dest,List src):将src中的内容复制到dest中boolean replaceAll(List list,Object oldVal,Object newVal):使用新值替换 List 对象的所有旧值 */@Testpublic void testCollections2(){List list = new ArrayList();list.add(123);list.add(456);list.add(12);list.add(78);list.add(456);Object obj = Collections.max(list);System.out.println(obj);int count = Collections.frequency(list, 4567);System.out.println(count);//实现List的复制//List list1 = new ArrayList();//错误的实现方式List list1 = Arrays.asList(new Object[list.size()]);Collections.copy(list1, list);System.out.println(list1);//通过如下的方法保证list的线程安全性。List list2 = Collections.synchronizedList(list);System.out.println(list2);}/* * reverse(List):反转 List 中元素的顺序shuffle(List):对 List 集合元素进行随机排序sort(List):根据元素的自然顺序对指定 List 集合元素按升序排序sort(List,Comparator):根据指定的 Comparator 产生的顺序对 List 集合元素进行排序swap(List,int, int):将指定 list 集合中的 i 处元素和 j 处元素进行交换 */@Testpublic void testCollections1(){List list = new ArrayList();list.add(123);list.add(456);list.add(12);list.add(78);System.out.println(list);Collections.reverse(list);System.out.println(list);Collections.shuffle(list);System.out.println(list);Collections.sort(list);System.out.println(list);Collections.swap(list, 0, 2);System.out.println(list);}}
0 0
- 黑马程序员——java基础学习笔记——第九天
- 黑马程序员-Java基础学习第九天笔记
- 黑马程序员--java学习笔记第九天
- 黑马程序员--Java基础学习(面向对象)第九天
- 黑马程序员_java基础笔记第九天
- 黑马程序员----基础学习第九天
- 黑马程序员--- 学习笔记(第九天)
- JAVA基础———第九天
- java基础第九天——泛型
- 黑马程序员 —— 面向对象(第九天)
- 黑马程序员——第九天(集合框架)
- 黑马程序员——Java语言基础 笔记第一篇
- 黑马程序员——java基础学习第一天
- 黑马程序员——java基础学习笔记——第一天
- 黑马程序员——java基础学习笔记——第三天
- 黑马程序员——java基础学习笔记——第五天
- 黑马程序员——java基础学习笔记——第七天
- 黑马程序员——java基础学习笔记——第八天
- iOS 图片压缩UIImage方法扩展
- 说说软件开发中版本号的那些事
- Linux Server 创建FTP用户
- 用SublimeText2制作网页中的表格
- 计算两个GPS坐标的距离 方法三 - C++语言
- 黑马程序员——java基础学习笔记——第九天
- 螺旋方阵的实现
- 浅谈公司核心业务数据表的重构——结合Memcache分析缓存策略与系统数据交互
- Butter Knife
- jquery插件——滑动条(1)
- 数字签名是什么
- wifi command line connect to ap
- 用ulimit来调整最大文件描述符数量
- Windows xp 磁盘加密