Map集合
Map集合:元素是键值对构成的
Map特点:
1、在同一个Map集合中,键是唯一的
2、在同一个Map集合中,值可以发生重复
3、一对键值,表示Map集合中的一个元素
Map的唯一性指的是键的唯一性,HashMap中需要键的类型要重写hashCode()方法和equals方法
点击查看代码
public class HashMapDemo1 {
public static void main(String[] args) {
HashMap<Student, String> map = new HashMap<>();
map.put(new Student("张三",21),"在读大学");
map.put(new Student("张四",18),"在读高中");
map.put(new Student("李四",15),"在初中");
map.put(new Student("王五",12),"在读小学");
System.out.println(map);
}
}
Map集合中的方法:
V put(K key,V value)
V remove(Object key)
void clear()
boolean containsKey(Object key)
boolean containsValue(Object value)
boolean isEmpty()
int size()
V get(Object key)
Set<K> keySet()
Collection<V> values()
Set<Map.Entry<K,V>> entrySet()
点击查看代码
public class MapDemo1 {
public static void main(String[] args) {
HashMap<Integer, String> map = new HashMap<>();
// V put(K key,V value)
map.put(1001,"王骏");
map.put(1002,"李娜");
map.put(1003,"刘三");
// V remove(Object key)
map.remove(1001);
System.out.println(map);
// void clear()
// map.clear();
// System.out.println(map);
// boolean containsKey(Object key)
System.out.println(map.containsKey(1003));
// boolean containsValue(Object value)
System.out.println(map.containsValue("李娜"));
// boolean isEmpty()
System.out.println(map.isEmpty());
// int size()
System.out.println(map.size());
// V get(Object key)
System.out.println(map.get(1003));
// Set<K> keySet()//获取所有的建
Set<Integer> keySet = map.keySet();
for (Integer i : keySet) {
System.out.println(i);
}
// Collection<V> values()//获取所有的值
Collection<String> values = map.values();
for (String v : values) {
System.out.println(v);
}
// 直接获取所有的键值对,遍历每一个键值对得到每一个键和值
// //Set<Map.Entry<K,V>> entrySet()
Set<Map.Entry<Integer, String>> entries = map.entrySet();
for (Map.Entry<Integer, String> e : entries) {
Integer key = e.getKey();
String value = e.getValue();
System.out.println(key+":"+value);
}
}
}
"aababcabcdabcde",获取字符串中每一个字母出现的次数要求结果:
"a(5)b(4)c(3)d(2)e(1)"
基本做法就是先将非map集合进行拆分(key,value),题目中会给出Key ,value的具体要求
创建map集合(有序使用treemap集合)将其存入map中
点击查看代码
public class TreeMapDemo1 {
public static void main(String[] args) {
String s = "aababcabcdabcde";
TreeMap<Character, Integer> map = new TreeMap<>();//创建一个TreeMap
char[] ch = s.toCharArray();//将字符串类型转换为字符数组
for (char c : ch) {//使用增强for循环对其进行遍历
if(map.containsKey(c)){//限制条件,存入map集合(设置一下哪一个是key,哪一个是Value)
map.put(c,map.get(c)+1);//get(c)通过建求值
}else{
map.put(c,1);
}
}
StringBuilder sb = new StringBuilder();//实现字符拼接
Set<Map.Entry<Character, Integer>> entries = map.entrySet();//map循环进行遍历
for (Map.Entry<Character, Integer> entry : entries) {
Character key = entry.getKey();//将我们的集合里的每一个键值对,拆分开,分别获取Key和Value
Integer value = entry.getValue();
//最后将我们的键值与括号进行凭接
sb.append(key).append("(").append(value).append(")");
}
String s1 = sb.toString();
System.out.println(s1);
}
}
定义一个教师类按照年龄进行排序,格式如下
张三(17)李四(20)小虎(21)笑笑(23)
目前:方法一:创建一个treeMap集合,map集合(<Teacher(最终目的是为了获取age),String(为了获取名字)>)(只能对Key进行排序),重写Comparator方法
排完序之后无法进行直接进行直接求age的值,key的类型是Teacher类型,需要再创建一个map1集合,并将map集合进行遍历,求出Key,和value的值其中Key 的值要 求出他的
t.getAge()重新赋值给key,放入集合Map1中
在对他进行拼接遍历
<details>
public class TreeMapDemo2 {
public static void main(String[] args) {
HashSet<Teacher> set = new HashSet<>();
TreeMap<Teacher, String> map = new TreeMap<>(new Comparator<Teacher>() {
@Override
public int compare(Teacher o1, Teacher o2) {
int i = o1.getAge() - o2.getAge();
return (i==0)?o1.getId().compareTo(o2.getId()):i;
}
});
set.add(new Teacher("c1001","小虎",21));
set.add(new Teacher("c1001","笑笑",23));
set.add(new Teacher("c1001","李四",20));
set.add(new Teacher("c1001","张三",17));
System.out.println(set);
for (Teacher t : set) {
map.put(t,t.getName());
}
TreeMap<Integer, String> map1 = new TreeMap<>();
Set<Map.Entry<Teacher, String>> entries = map.entrySet();
for (Map.Entry<Teacher, String> entry : entries) {
Teacher key = entry.getKey();
int age = key.getAge();
String value = entry.getValue();
map1.put(age,value);
}
Set<Map.Entry<Integer, String>> entries1 = map1.entrySet();
StringBuilder sb = new StringBuilder();
for (Map.Entry<Integer, String> entry : entries1) {
Integer key = entry.getKey();
String value = entry.getValue();
sb.append(value).append("(").append(key).append(")");
}
String s = sb.toString();
System.out.println(s);
}
}

浙公网安备 33010602011771号