Map集合
map集合的使用
package com.cloud.map; import java.util.HashMap; import java.util.Map; publicclass Demo1 { /* 双列集合: Map:实现Map接口的集合类,具备的特点:存储的数据都是以键值对的方式,键不可以重复,值可重复 */ publicstatic 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; publicclass Demo2 { /* HashMap 底层使用hash表来实现 向HashMap中添加元素的时候,首先调用键的hashCode方法得到元素的哈希码的值,经过运算,得 到该元素在哈希表中的位置; 1.如果该位置没有存储元素,则元素之间添加到哈希表中 2.如果该位置有其他的元素,会调用元素的equals方法,如果返回false,该元素被储存,返回 true,该元素重复不能存储 */ publicstatic 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{ privateint id; private Stringname; public Person(int id,String name){ this.id=id; this.name=name; } @Override public String toString() { return"[编号:"+this.id+";姓名:"+this.name+"]"; } @Override publicint hashCode() { //TODO Auto-generated method stub returnthis.id; } @Override publicboolean equals(Object obj) { Person p=(Person) obj; returnthis.id==p.id; } } |
TreeMap的使用
package com.cloud.map; import java.util.Comparator; import java.util.TreeMap; publicclass Demo3 { /* TreeMap:基于二叉树的数据结构实现的,会对具备自然特性的键进行排序存储 1.元素的键具备自然特性,直接排序存储 2.不具备自然特性,实现Comparable接口,在ComparaTo中定义排序规则 3.不具备自然特性,没有实现Comparable接口,在创建TreeMap对象的时候传入比较器 */ publicstatic 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; intsarlary; public Emp(String name,int sarlary){ this.name=name; this.sarlary=sarlary; } @Override public String toString() { return"[姓名:"+this.name+";薪水:"+this.sarlary+"]"; } /*@Override publicint compareTo(Emp o) { return this.sarlary-o.sarlary; }*/ } //自定义一个比较器 class MyComparatorimplements Comparator<Emp>{ @Override publicint compare(Emp o1, Emp o2) { return o1.sarlary-o2.sarlary; } } |
Vector集合
Vector类 是在 java 中可以实现自动增长的 对象数组,vector在C++ 标准模板库中的部分内容,它是一个多功能的,能够 操作多种数据结构和算法的模板类和函数库。
1
2
3
|
vector<int>test;
//建立一个vector
test.push_back(
1
);
test.push_back(
2
);
//把1和2压入vector这样test[0]就是1,test[1]就是2
|
1
2
3
4
|
vector<int>test;
//建立一个vector
test.push_back(
1
);
test.push_back(
2
);
//把1和2压入vector这样test[0]就是1,test[1]就是2
int i =test.
at
(
1
);
//i为2
|
1
2
3
|
public
Vector()
public
Vector(
int
initialcapacity,
int
capacityIncrement)
public
Vector(
int
initialcapacity)
|
package com.cloud.vector; import java.util.Enumeration; import java.util.Vector; publicclass Day1 { /* Vector底部维护Object数组,实现和ArrayList一样,但是Vector是线程安全,效率低,二者比较: 相同点: 1.底部都是维护Object的数组 不同点: 1.ArrayList线程不同步,效率高 2.ArrayList JDK1.2出现,Vector JDK1.0出现 */ publicstatic 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()); } } } |