集合框架-工具类(Collections)

一、基本含义

是一个包装类。它包含有各种有关集合操作的静态多态方法。此类不能实例化,就像一个工具类(如Arrays),服务于Java的Collection框架。

二、排序——sort()

2.1 String类元素

元素为String类型
排序规则:
(1)逐个字符比较,直至得出结果。即相同时,比较下一位。
(2)(0-9)<(A-Z)<(a-z)。

// 元素类型:字符串。排序规则:0-9,A-Z,a-z
public void testSort2() {
	List<String> stringList = new ArrayList<String>();
	for (int i = 0; i < 6; i++) {
		stringList.add(randomString());
	}
	System.out.println("\n------------排序前--------------");
	for (int i = 0; i < stringList.size(); i++) {
		System.out.print(stringList.get(i) + " ");
	}
	Collections.sort(stringList); // 排序sort()调用。
	System.out.println("\n------------排序后--------------");
	Iterator<String> it = stringList.iterator();
	while (it.hasNext()) {
		String str = it.next();
		System.out.print(str + " ");
	}
}
// 方法:随机字符串。长度小于10。字符随机。
  public String randomString() {
    String str = "";
	Random rand = new Random();
	Integer num = 1 + rand.nextInt(9);
	for (int i = 0; i < num; i++) {
		str = str + randomChar();
	}
	return str;
}
// 方法:随机字符。
public char randomChar() {
	char c;
	Random rand = new Random();
	while (true) {
		int num = rand.nextInt(123);			
		if (num > 96) {
			// 此区间转化为小写字母。
			c = (char)num;
			break;
		} else if (num > 64 && num < 91) {
			// 此区间转化为大写字母。
			c = (char) num;
			break;
		} else if (num > 47 && num < 58) {
			// 此区间转化为数字。
			c = (char) num;
			break;
		} 
	}
	return c;
}	

2.2 包装类元素

元素为基本数据类型的包装类型时。

// 元素类型:包装类。
 public void testSort1() {
	List<Integer> integerList = new ArrayList<Integer>();
	Random random = new Random();
	Integer num;
	for (int i = 0; i < 10; i++) {
		do {
			num = random.nextInt(100);
		} while (integerList.contains(num));
		integerList.add(num);
	}
	System.out.println("------------排序前--------------");
	for (Integer in : integerList) {
		System.out.print(in + " ");
	}
	Collections.sort(integerList);
	System.out.println("\n------------排序后--------------");
	Iterator<Integer> it = integerList.iterator();
	while (it.hasNext()) {
		Integer i = it.next();
		System.out.print(i + " ");
	}
}

2.3 类元素

需要结合Comparable接口或者Comparator接口。
即类先实现接口,并重写对应的方法。
实现Comparable接口时:默认排序。

public class Student implements Comparable{
  private String id;
  private String name;
  public Student(){
  }
  public Student(String id,String name){
    this.id = id;
    this.name = name;
  }
  @Override
  public int compareTo(Student o){
    return this.id.compareTo(o.getId());
  }
}

实现Comparator接口时:临时排序。

public class Course implemants Comparator{
  private String id;
  private String name;
  public Course(){
  }
  public Course(String id,String name){
    this.id = id;
    this.name = name;
  }
  @Override
  public int compare(Course1 o1, Course2 o2){
    return o1.name.compare(o2.name); // 此时为升序排列。
    //return o2.name.compare(o1.name); // 此时为降序排列。
  }
}

调用**Collection.sort()**方法:

List<Student> studentList = new ArrayList<Student>();
Student[] studentArray = {new Student("1","张三"),new Student("3","李四"),new Student("2","王五")};
studentArray.addAll(Arrays.asList(studentList));
List<Course> courseList = new ArrayList<Course>();
Course[] courseArray = {new Course("1","语文"),new Course("3","英语"),new Course("2","数学")};
courseArray.addAll(Arrays.asList(courseList));
Collections.sort(studentList);
Collections.sort(courseArray, new Course());
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值