Map集合
map集合的使用
package com.cloud.map; import java.util.HashMap; import java.util.Map; public class Demo1 { /* 双列集合: Map:实现Map接口的集合类,具备的特点:存储的数据都是以键值对的方式,键不可以重复,值可重复 */ public static void main(String[] args) { Map<String,String> map = new HashMap<String,String>(); map.put("1", "aaa"); map.put("2", "bbb"); map.put("3", "ccc"); /*添加常用的方法 //这里返回null:表示4这个键以前没有关联的值 System.out.println(map.put("4", "ddd")); //这里输出关联的值ddd,会被abc覆盖 map.put("5", "abc"); System.out.println(map.put("4", "abc")); Map<String,String> map2 = new HashMap<String,String>(); map2.put("6", "eee"); map2.put("1", "aaa"); map2.put("1", "ert"); map.putAll(map2); */ /*删除数据常用的方法 System.out.println("删除的数据:"+map.remove("1")); map.clear(); */ /*获取方法 System.out.println(map.get("1")); System.out.println(map.size()); */ /*判断的方法 System.out.println(map.containsKey("1")); System.out.println(map.containsValue("aaa")); map.clear(); map.put(null, null); System.out.println(map.isEmpty()); */ System.out.println("集合元素:"+map); } } |
HashMap的使用
package com.cloud.map; import java.util.HashMap; import java.util.Map; public class Demo2 { /* HashMap 底层使用hash表来实现 向HashMap中添加元素的时候,首先调用键的hashCode方法得到元素的哈希码的值,经过运算,得 到该元素在哈希表中的位置; 1.如果该位置没有存储元素,则元素之间添加到哈希表中 2.如果该位置有其他的元素,会调用元素的equals方法,如果返回false,该元素被储存,返回 true,该元素重复不能存储 */ public static void main(String[] args) { Map<Person,String> map = new HashMap<Person,String>(); map.put(new Person(1,"a"), "aaa"); map.put(new Person(2,"b"), "bbb"); map.put(new Person(3,"c"), "ccc"); map.put(new Person(1,"a"), "ddd"); System.out.println("集合的元素:"+map); } } class Person{ private int id; private String name; public Person(int id,String name){ this.id=id; this.name=name; } @Override public String toString() { return "[编号:"+this.id+";姓名:"+this.name+"]"; } @Override public int hashCode() { // TODO Auto-generated method stub return this.id; } @Override public boolean equals(Object obj) { Person p=(Person) obj; return this.id==p.id; } } |
TreeMap的使用
package com.cloud.map; import java.util.Comparator; import java.util.TreeMap; public class Demo3 { /* TreeMap:基于二叉树的数据结构实现的,会对具备自然特性的键进行排序存储 1.元素的键具备自然特性,直接排序存储 2.不具备自然特性,实现Comparable接口,在ComparaTo中定义排序规则 3.不具备自然特性,没有实现Comparable接口,在创建TreeMap对象的时候传入比较器 */ public static void main(String[] args) { //创建一个比较器 MyComparator my=new MyComparator(); TreeMap<Emp,String> map=new TreeMap<Emp,String>(my); /*map.put('c', 3); map.put('b', 2); map.put('a', 1);*/ map.put(new Emp("a",5000), "6"); map.put(new Emp("b",4000), "5"); map.put(new Emp("c",3000), "4"); map.put(new Emp("d",2000), "3"); //下面e的值1就会覆盖d的值3 map.put(new Emp("e",2000), "1"); System.out.println(map); } } class Emp /*implements Comparable<Emp>*/{ String name; int sarlary; public Emp(String name,int sarlary){ this.name=name; this.sarlary=sarlary; } @Override public String toString() { return "[姓名:"+this.name+";薪水:"+this.sarlary+"]"; } /*@Override public int compareTo(Emp o) { return this.sarlary-o.sarlary; }*/ } //自定义一个比较器 class MyComparator implements Comparator<Emp>{ @Override public int compare(Emp o1, Emp o2) { return o1.sarlary-o2.sarlary; } } |
Vector集合
package com.cloud.vector; import java.util.Enumeration; import java.util.Vector; public class Day1 { /* Vector 底部维护Object数组,实现和ArrayList一样,但是Vector是线程安全,效率低,二者比较: 相同点: 1.底部都是维护Object的数组 不同点: 1.ArrayList线程不同步,效率高 2.ArrayList JDK1.2出现,Vector JDK1.0出现 */ public static void main(String[] args) { Vector v=new Vector(); v.addElement("Spring1"); v.addElement("Spring2"); v.addElement("Spring3"); Enumeration e = v.elements(); while(e.hasMoreElements()){ System.out.println(e.nextElement()); } } } |