集合框架Map的介绍
1.Map集合中存放的都是一组映射关系
2.在集合中我们用的最多的一般是LIst集合和Map集合
3.增加
putput(key
, value
)
4.删除
map
.clear();
HashMap
<String, Object> map
= new HashMap<>();
map
.put("java01", 1);
Object obj
=map
.remove("java01");
System
.out
.println(obj
);
5.可以返回替换前的值
map
.put("java03", 3);
map
.put("java04", 3);
Object put
= map
.put("java04", "*");
System
.out
.println(put
);
6.
Set
<Entry
<String, Object>> entrySet
= map
.entrySet();
for (Entry
<String, Object> entry
: entrySet
) {
System
.out
.println(entry
.getKey() + "===" + entry
.getValue());
}
----------------------------------------------------------
Set
<String> keySet
= map
.keySet();
for (String key
: keySet
) {
System
.out
.println(key
+ "===" + map
.get(key
));
}
集合框架Map应用
public class TreeMapDemo {
public static void main(String
[] args
) {
Map
<Student, String> map
= new TreeMap<>(new StuComp());
map
.put(new Student("liuting", 18), "bejing");
map
.put(new Student("wangwang", 43), "xingjiang");
map
.put(new Student("goudan", 28), "dongjiang");
map
.put(new Student("xuyangyang", 38), "hulunbeier");
map
.put(new Student("liutingting", 18), "bejing");
System
.out
.println(map
.size());
Set
<Entry
<Student, String>> entrySet
= map
.entrySet();
for (Entry
<Student, String> entry
: entrySet
) {
System
.out
.println(entry
.getKey() + "====" +entry
.getValue());
}
}
}
class Student implements Comparable<Student>{
private String name
;
private int age
;
public String
getName() {
return name
;
}
public void setName(String name
) {
this.name
= name
;
}
public int getAge() {
return age
;
}
public void setAge(int age
) {
this.age
= age
;
}
@Override
public String
toString() {
return "Student [name=" + name
+ ", age=" + age
+ "]";
}
public Student(String name
, int age
) {
super();
this.name
= name
;
this.age
= age
;
}
public Student() {
super();
}
private int hashcode() {
return this.getName().hashCode() + this.getAge()*39;
}
@Override
public boolean equals(Object obj
) {
Student stu
= (Student
)obj
;
return this.getAge() ==stu
.getAge() && this.getName().equals(stu
.getName());
}
@Override
public int compareTo(Student o
) {
int num
= this.getAge() - o
.getAge();
if(num
==0) {
return this.getName().compareTo(o
.getName());
}
return this.getAge() - o
.getAge();
}
}
class StuComp implements Comparator<Student>{
@Override
public int compare(Student o1
, Student o2
) {
int num
= o1
.getName().compareTo(o2
.getName());
if(num
==0) {
return o1
.getAge() - o2
.getAge();
}
return num
;
}
}
Treemap的理解
1.TreeMap:查看键值时,它们会被排序,排序由Comparabel.Comparator决定
2.TreeMap特点:结果是经过排序。
3.TreeMap可以保证所有的key-value对处于有序状态
4.排序方式: 自然排序,必须实现Comparable接口. 定制排序:不需要Map的key实现Comparable接口。
统计字符串出现的次数
public class HashMapDemo {
public static void main(String
[] args
) {
String str
= "askgfdklsalfglskagkllaskgdflkas";
str
= cishu(str
);
System
.out
.println(str
);
}
private static String
cishu(String str
) {
char[] charArray
= str
.toCharArray();
Map
<Character, Integer> map
= new TreeMap<>()+;
for (char c
: charArray
) {
Integer value
= map
.get(c
);
if(value
== null
) {
map
.put(c
, 1);
}else {
map
.put(c
, ++value
);
}
}
StringBuffer sb
= new StringBuffer();
for(Map
.Entry
<Character, Integer> entry
:map
.entrySet()) {
sb
.append(entry
.getKey() + "("+entry
.getValue()+")");
}
return sb
.toString();
}
}
统计功能
1.将字符串转为字符组,将这个字符串中的字符当做map集合中的Key,将出现的次数作为value值
2当字符第一次出现的时候,那么用它在集合中进行寻找,返回值必然为null,之后将该字符对应的值改为1
3.如果说该字符不是第一次出现,该字符对应值不为null,然后应该+1.