Java类集总结之二

1)Map接口

关系:Map(接口)

HashMap(非抽象子类)、TreeMap(非抽象子类)

在开发中,Map集合的内容多用来查询,全部输出的操作较少;而Collection接口在开发中的主要作用就是用来传递内容及输出的。

2)

 1 import java.util.HashMap;
 2 import java.util.Map;
 3
 4 public class HashMapDemo01 {
 5
 6     public static void main(String[] args) {
 7         Map<String,String> map = null;
 8         map = new HashMap<String,String>();        //利用HashMap实例化Map
 9
10         map.put("mldn", "www.mldn.cn");
11         map.put("zhangsan", "www.zhangsan.cn");
12         map.put("lisi", "lisi");
13         String val = map.get("zhangsan");
14
15         System.out.print("取出的内容是:"+val);
16     }
17 }

3)

排序子类TreeMap

按key进行排序。

Map接口中的内容不能直接使用迭代输出因为每个位置存放都是一对值

4)

 1 import java.util.Iterator;
 2 import java.util.Map;
 3 import java.util.Set;
 4 import java.util.TreeMap;
 5
 6 public class TreeMapDemo01 {
 7
 8     public static void main(String[] args) {
 9         Map<String,String> map = null;
10         map = new TreeMap<String,String>();
11         map.put("b", "www.b.cn");
12         map.put("a", "wwww.a.cn");
13         map.put("c", "www.c.cn");
14
15         Set<String> keys = map.keySet();
16         Iterator it = keys.iterator();
17
18         while(it.hasNext()){
19             String str = (String) it.next();
20             System.out.println(str + "……" + map.get(str));
21         }
22     }
23 }

5)Map输出的最标准操作流程:

 1 import java.util.HashMap;
 2 import java.util.Iterator;
 3 import java.util.Map;
 4 import java.util.Set;
 5
 6 public class IteratorDemo04 {
 7
 8     public static void main(String[] args) {
 9         Map<String, String> map = null;
10
11         map = new HashMap<String, String>();
12         map.put("zhangsan", "www.zhangsan.cn");
13         map.put("lisi", "www.lisi.cn");
14         Set<Map.Entry<String, String>> allSet = null;
15         allSet = map.entrySet();
16         Iterator<Map.Entry<String, String>> iter = null;
17         iter = allSet.iterator();
18         while(iter.hasNext()){
19             Map.Entry<String, String> me = iter.next();
20             System.out.println(me.getKey() + "……" + me.getValue());
21         }
22     }
23 }

6)非系统类直接作为key:

和在HashSet中存储非系统类一样,必须在自定义类中覆写Object类的hashCode()、

equals()和toString()方法,之后便能和使用系统类(如String类)那样,可以通过匿名对象找到相应的value。

 1 import java.util.HashMap;
 2 import java.util.Map;
 3
 4 class Person{
 5     private String name;
 6     private int age;
 7     public Person(String name, int age){
 8         this.name = name;
 9         this.age = age;
10     }
11     public boolean equals(Object obj){
12         if(this == obj){
13             return true;
14         }
15         if(!(obj instanceof Person)){
16             return false;
17         }
18         Person p = (Person) obj;
19         if(this.name.equals(p.name)&&(this.age ==p.age)){
20             return true;
21         }else{
22             return false;
23         }
24     }
25     public int hashCode(){
26         return this.name.hashCode() * this.age;
27     }
28     public String toString(){
29         return this.name + "……" + this.age;
30     }
31 }
32
33 public class HashMapDemo08 {
34
35     public static void main(String[] args) {
36         Map<Person, String> map = null;
37         map = new HashMap<Person, String>();
38         Person per = new Person("张三", 30);
39         map.put(per, "zhangsan");
40         System.out.println(map.get(per));
41     }
42
43 }

HashMap类和TreeMap类中的key不能重复,如果重复就会被覆盖。

而IdentityHashMap类中,key可以重复, 只要两个对象的地址不同即可。

时间: 2024-08-13 16:31:59

Java类集总结之二的相关文章

JAVA笔记:Java 类集总结(二、Map接口及相关)

Map接口 与Collection接口不同的是,Map接口保存的对象是一对对,类似key-value这样的分布. Map接口的常用子类: 以HashMap为例使用Map: import java.util.HashMap ; import java.util.Map ; public class HashMapDemo01{ public static void main(String args[]){ Map<String,String> map = null; // 声明Map对象,其中k

浅谈java类集框架和数据结构(2)

继续上一篇浅谈java类集框架和数据结构(1)的内容 上一篇博文简介了java类集框架几大常见集合框架,这一篇博文主要分析一些接口特性以及性能优化. 一:List接口 List是最常见的数据结构了,主要有最重要的三种实现:ArrayList,Vector,LinkedList,三种List均来自AbstracList的实现,而AbstracList直接实现了List接口,并拓展自AbstractCollection. 在三种实现中,ArrayList和Vector使用了数组实现,可以认为这两个是

Java类集(接口继承的关系)

类集的概念: 类集(Collection)就是一个动态的对象数组,与一般的对象数组不同,类集中的对象内容可以任意扩充. 类集的特性: 这种框架是高性能的 框架必须允许不同类型的类集以相同的方式和高度互操作方式工作 类集必须是容易扩展和/或修改的 Java类集(接口继承的关系)

Java类集总结之一

1)类集:一个动态的对象数组,是对一些实现好的数据结构进行了包装. 2)在使用各个类集接口时,如果没有指定泛型,则肯定会出现警告信息, 此时,泛型将被擦除而全部使用Object接收. 3)类集框架本身不受对象数组长度的限制. 4)Collection接口 此接口使用了泛型,可以保证类集操作的安全性,避免发生ClassCastException. Collection接口是单值存放的最大父接口. 5)在开发中,很少直接使用Collectioin接口进行开发,基本上都是使用其子类接口. 子类接口主要

Java类集(List,Vector,map……) (1)

1.1在介绍类集框架之前,先来思考这样一个问题,如果现在要保存一组对象,按照初级的做法只能使用对象数组,但是使用对象数组操作本身有一个限制,就是数组有长度的限制:而通过一些数据结构的操作,如链表,则可以完成动态对象数组的操作,但是这些如果全部由开发人员来做,肯定非常麻烦. 类集框架恰好解决了以上问题,所谓的类集就是一个动态的对象数组,是对一些实现好的数据结构进行了包装,这样在使用时就会非常方便,而且最重要的是类集框架本身不受对象数组长度的限制. 类集框架被设计成拥有以下几个特性: 1.这种框架是

[零基础学JAVA]Java SE应用部分-35.JAVA类集之四

1.类集结构 (1)类集的产生目的 类集简单来讲就是一个动态的对象数组,此对象数组可以改变大小,可以任意的实现对象的增加.删除.输出.所有的类集存放java.util包中. (2)类集的划分 1.存放单值:Collection 2.存放一对值:Map 3.输出:Iterator (3)类集的具体概念 <1>Collection(只能存放一个值) |- 主要功能:用于输出使用 |- 子接口:List(允许有重复的元素,而且加入的顺序就是输出的顺序) |- 子类:ArrayList,是在Java

Java 类集初探

类集 类集:主要功能就是Java数据结构的实现(java.util) 类集就是动态对象数组(链表也是动态数组) Collection 接口* Collection是整个类集之中单值保存的最大 父接口 .即:每一次仅可以向集合中保存一个对象 public interface Collection<E> extends Iterable<E> 在Collection定义的常用操作方法 常用操作方法 向集合中保存数据 public boolean add(E e); 追加一个集合 pub

java类集框架

一.系统简述: 1.集合框架总体结构    Java中集合类定义主要是java.util.*包下面,常用的集合在系统中定义了三大接口,这三类的区别是: java.util.Set接口及其子类,set提供的是一个无序的集合: java.util.List接口及其子类,List提供的是一个有序的集合: java.util.Map接口及其子类,Map提供了一个映射(对应)关系的集合数据结构: 另外,在JDK5中新增了Queue(队列)接口及其子类,提供了基于队列的集合体系.每种集合,都可以理解为用来在

Java类集框架之ArrayList源码剖析

ArrayList 基于数组实现,本质上是对象引用的一个变长数组,能够动态的增加或减小其大小. 不是线程安全的,只能用在单线程环境下.多线程环境下可以考虑用Collection.synchronizedList(List l)函数返回一个线程安全的ArrayList类,也可以使用concurrent并发包下的 CopyOnWriteArrayList类 下面直接贴ArrayList的Java实现,来源JDK1.8.0_25/src.zip. public class ArrayList<E>