Java学习笔记程序员

常用的List,Set,Map容器以及比较器

2016-06-22  本文已影响1524人  JC_Hou

一、简述:

List,Set接口属于集合类容器,Collection接口是它们所有的父接口;
与List,Set接口不同,Map接口是所有Map类容器的父接口,通过键值对(key-value)的映射关系,用键(key)来找值(value)

二、一些常用接口特点:

三、常用接口的功能:

这些即是最常用的容器。

Comparable和Comparator的区别:

Comparable & Comparator 都是用来实现集合中元素的比较、排序的,只是 Comparable 是在对象内部定义的方法实现的排序,Comparator 是在对象外部实现的排序,所以,如想实现排序,就需要在对象外定义 Comparator 接口的方法或在对象内实现 Comparable 接口的方法。

Collections的sort()方法有两个重载有参方法:

Collections.sort((List<T> list)
Collections.sort((List<T> list, Comparator<? super T> c)```
- #####Comparable:提前做好准备
Comparable 是一个对象本身就已经支持自比较所需要实现的接口
自定义的类要在加入list容器中后能够排序,可以实现Comparable接口,再用```Collections.sort((List<T> list)```方法,此时的顺序就是Comparable接口设定的排序方式。

import java.util.Arrays;
public class User implements Comparable {
private String id;
private int age;
public User(String id, int age) {
this.id = id;
this.age = age;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
//实现Comparable接口需要实现此方法,此例类中比较年龄
public int compareTo(Object o) {
return this.age - ((User) o).getAge();
}
}

List<User> userList=new ArrayList<>();
userList.add(user1);
userList.add(user2);
userList.add(user3);
......
Collection.sort(userList);

- ####Comparator:临时性
 Comparator 是一个专用的比较器,当这个对象不支持自比较或者自比较函数不能满足你的要求时,你可以写一个比较器来完成两个对象之间大小的比较。
可以说Comparable是对象自已完成比较,Comparator是外部程序实现比较的而已。

import java.util.Arrays;
import java.util.Comparator;
public class UserComparator implements Comparator {
public int compare(Object o1, Object o2) {
return ((User) o1).getAge() - ((User) o2).getAge();
}
}

当User类没有实现Comparable时

List<User> userList=new ArrayList<>();
userList.add(user1);
userList.add(user2);
userList.add(user3);
......
Collection.sort(userList,new UserComparator());



上一篇下一篇

猜你喜欢

热点阅读