智渔课堂官方免费教程三十五:Java集合框架之Collection接口和Collections类

时间:2022-01-17 16:17:42

Collection接口

Collection接口是List和Set接口的父接口,其中主要定义了一些集合基本操作的方法,包括与Iterator之间的关系
List  extends  Collection
ArrayList  implements  List
LinkedList  implements  List
Vector  implements  List
Set  extends  Collection
HashSet  implements  Set
SortedSet  extends  Set
TreeSet  implements  SortedSet
Map接口
HashMap  implements  Map
SortedMap  extends  Map
NavigableMap  extends  Map
TreeMap  implements  NavigableMap
Hashtable  implements  Map
Properties  extends  Hashtable
Iterator:迭代器

Collections类

操作集合的一个工具类,类似Arrays类;其中最主要的是排序方法sort,以下两种方式使用sort方法。
实例一:package collections.comparable;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
/**
* 演示Collections类中的一些常用方法
* @author 学霸联盟 - 赵灿
*/
public class CollectionsDemo {
public static void main(String[] args) {
List<Element> list = new ArrayList<Element>();
list.add(new Element(2));
list.add(new Element(1));
list.add(new Element(4));
list.add(new Element(3));
//循环输出排序前的顺序
System.out.println("----------- 排序前 ---------");
for (Element element : list) {
System.out.print(element.getValue() + " ");
}
/*
* Collections中的sort方法只能对List集合排序
* 当加入List集合的元素实现了Comparable接口
* 可以直接使用sort方法排序
*/
Collections.sort(list);
System.out.println();
System.out.println("----------- 排序后 ---------");
//循环输出排序前的顺序
for (Element element : list) {
System.out.print(element.getValue() + " ");
}

System.out.println();
System.out.println("最大值:" + Collections.max(list).getValue());
System.out.println("最小值:" + Collections.min(list).getValue());

}
}

/**
* Element类 实现 Comparable接口
* @author 学霸联盟 - 赵灿
*/
class Element implements Comparable<Element>{
private int value;
public Element(){ }
public Element(int value){
this.value = value;
}
/*
* 重写接口中的比较方法
* 注意这里的参数不能再是Object类型,而要是泛型传入的Element类或其子类
*/
@Override
public int compareTo(Element e) {
//升序排列,当前对象的值减去参数对象的值
//降序排列,参数对象的值减去当前对象的值
return this.value - e.value;
}
public int getValue(){
return value;
}
}
运行结果:
----------- 排序前 ---------
2 1 4 3
----------- 排序后 ---------
1 2 3 4
最大值:4
最小值:1

实例二:package collections.comparator;import java.util.ArrayList;import java.util.Collections;import java.util.Comparator;import java.util.List;/** * 演示Collections类中的一些常用方法 * @author 学霸联盟 - 赵灿 */public class CollectionsDemo {	public static void main(String[] args) {		SortUtil su = new SortUtil();		List<Entity> list = new ArrayList<Entity>();		list.add(new Entity("b"));		list.add(new Entity("a"));		list.add(new Entity("d"));		list.add(new Entity("c"));		//循环输出排序前的顺序		System.out.println("----------- 排序前 ---------");		for (Entity element : list) {			System.out.print(element.getTag() + "  ");		}		/*		 * Collections中的sort方法只能对List集合排序		 * 当加入List集合的元素没有实现Comparable接口		 * 需要提供一个排序工具类的对象,实现Comparator接口		 */		Collections.sort(list, su);		System.out.println();		System.out.println("----------- 排序后 ---------");		//循环输出排序前的顺序		for (Entity element : list) {			System.out.print(element.getTag() + "  ");		}		System.out.println();		System.out.println("最大值:" + Collections.max(list, su).getTag());		System.out.println("最小值:" + Collections.min(list, su).getTag());			}}/** * Entity类 * 实体类,只负责存储数据 * @author 学霸联盟 - 赵灿 */class Entity{	private String tag;	public Entity(String tag){		this.tag = tag;	}	public String getTag(){		return tag;	}}/** * SortUtil类 实现 Comparator接口 * 排序工具类,只负责对象比较 * @author 学霸联盟 - 赵灿 */class SortUtil implements Comparator<Entity>{	//实现接口中的方法,自定义比较两个对象的比较规则	@Override	public int compare(Entity e1, Entity e2) {		/*		 * 根据两个Entity类型的对象的tag属性比较		 * tag属性是String类型,String类型实现了Comparable接口		 * 所以调用String对象的compareTo方法比较既可		 * 升序排列使用第一个参数的tag属性调用compareTo方法,第二个参数作为compareTo方法的参数		 * 降序排列使用第二个参数的tag属性调用compareTo方法,第一个参数作为compareTo方法的参数		 */		return e1.getTag().compareTo(e2.getTag());	}}运行结果:----------- 排序前 ---------b  a  d  c  ----------- 排序后 ---------a  b  c  d  最大值:d最小值:a