package map;
public class differentDemo {
/**
* map和Collection集合的区别
* map集合是键值对的集合 Collection是单一出现数据的聚合
* Map的键是唯一的,而collection的子接口List集合中的元素是可以重复的,set是唯一的
* map是夫妻对,collection是光棍
*/
}
package map;
import java.util.HashMap;
import java.util.Map;
public class MapDemo1 {
public static void main(String[] args) {
/**
* Map的特点:
* 数据成对出现
* 数据的键是唯一的
* 一个键只能对应一个值
* 值可以重复
* 键允许一个为空,值可以多个是空
* 方法:
* put()
* putAll()
* remove()
* clear()
*
* get()
* Set<k> keySet
*
* 判断功能:
* containsKey()
* containsValue()
* isEmpty()
*
*
* 遍历方式:
* Set<Entry<String,Person>> entry = map.entrySet();
* for(Entry<String,Person> sp:entry){
* String key = sp.getKey();
* Person value = sp.getValue();
* System.out.println("键:"+key+" 值:"+value);
*
* }
* HashMap:
*
* HashMap是map的实现类
* 允许多个null值和null键
* Hashmap中的元素没有顺序
* hashmap不是线程安全的
* Map<String,String> map = new HashMap<String,String>();
* map = Collections.synchronizedMap(map);
* 这样就变成了线程安全的
*
* Treemap:
* 可以进行自然排序
* 可以创建comparetor进行排序,可以重写compareto进行排序
*
* key不能为null,不能重复
*
*
* HashTable:
* 不允许有任何null值和null键
*
* HashTable中的元素没有顺序
* 是线程安全的
*
* LinkedHashMap:
*
* 有顺序,
* 允许多个null值和null键
* 不是线程安全的
*
*
*
*/
Map<String,String> map = new HashMap<String,String>();
map.put("鼓上蚤","时迁");
map.put("行者","武松");
//键是唯一的,如果有俩会存在覆盖的情况
map.put("行者","武大郎");
}
}
package practice;
import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
public class Demo1 {
public static void main(String[] args) {
/**
* map的特点: 1.数据成对出现 2.数据的键是唯一的,如果有相同的会被覆盖的 3.一个键只能有一个值 4.值可以重复
* 5.键允许有一个为空,值可以多个是空,有一个null可以对应,有两个null就无法正确对应了
*/
Map<String, String> map = new HashMap<String, String>();
map.put("鼓上蚤", "时迁");
map.put("行者", "武松");
map.put("及时雨", "宋江");
map.put("呼保义", "宋江");
map.put(null, "无用");
map.put("晓晓", null);
map.put("螃蟹", null);
// 只能有一个null键,否则,会被覆盖
// map.put(null, "无1用");
System.out.println(map);
Map<String, String> map1 = new HashMap<String, String>();
map1.put("花和尚", "鲁智深");
map1.put("青面兽", "杨志");
// 一个map添加到另一个map中
map.putAll(map1);
System.out.println(map);
// 清空map
map1.clear();
System.out.println(map1);
// 删除一个键值对
map.remove("青面兽");
// 通过对应的键来获取值
System.out.println(map);
// 通过get来获取键值对 如果没有相应的键就返回null
String a = map.get("花和尚");
System.out.println(a);
Set<String> set = map.keySet();
//这里输出的是所有的键
System.out.println(set);
for(String key:set) {
//根据当前的key来获得value
String value = map.get(key);
System.out.println(value);
}
Map<String,Person> map2 = new HashMap<String,Person>();
map2.put("3", new Person(1,"阿彪",1));
map2.put("2", new Person(1,"拖拉机",2));
System.out.println(map2);
//是否包含某个值
boolean iscon = map.containsKey("花和尚");
System.out.println(iscon);
boolean isval = map.containsValue("鲁智深");
System.out.println(isval);
boolean isval1 = map2.containsValue(new Person(1,"阿彪",1));
System.out.println(isval1);
Set<Entry<String, String>> entry = map.entrySet();
for(Entry<String, String> et : entry)
{ //for循环中自己定义的那个就是元素
String key1 = et.getKey();
String value1 = et.getValue();
System.out.println("键: "+key1+" 值:"+value1);
}
}
}
package practice;
import java.util.HashMap;
import java.util.Map;
public class HashMapDemo {
public static void main(String[] args) {
/**
* map的实现类HashMap
* 1.允许多个null值和一个null键
* 2.HashMap中的元素没有顺序(跟添加的顺序无关)
* 3.HashMap不是线程安全的
*/
Map<String,String> map = new HashMap<String,String>();
map.put("鼓上蚤", "时迁");
map.put("呼保义", "宋江");
map.put("及时雨", "宋江");
map.put("行者", "武松");
System.out.println(map);
}
}
package practice;
public class HashtableDemo {
/**
* 不允许有null值和null键
*/
}
package practice;
public class HashtableDemo {
/**
* 不允许有null值和null键
*/
}
package practice;
public class Person {
private int age;
private String name;
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "Person [age=" + age + ", name=" + name + ", gender=" + gender + "]";
}
public Person(int age, String name, int gender) {
super();
this.age = age;
this.name = name;
this.gender = gender;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + age;
result = prime * result + gender;
result = prime * result + ((name == null) ? 0 : name.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if(!(obj instanceof Person)) {
return false;
}
Person p = (Person)obj;
if(this.age == p.age&&this.gender==p.gender
&&this.name!=null&&p.name!=null&this.name.equals(p.name)) {
return true;
}
else {
return false;
}
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getGender() {
return gender;
}
public void setGender(int gender) {
this.gender = gender;
}
private int gender;
}
package practice;
public class TreeMap {
/**
* 有自然排序
*/
}