Collections算法类(注意Collections不是Collection!)

一、Collections算法类

  • Java集合框架将针对不同数据结构算法的实现都保存在工具类
  • Collections类定义了一系列用于操作集合的静态方法
    在这里插入图片描述

Collections类常用方法

  • Collections和Collection不同,前者是集合的操作类,后者是集合接口
  • Collections提供的常用静态方法
    1.sort()排序
    2.binarySearch();查找
    3.max()\min();查找最大\最小值
    【注:详见帮助文档
    具体实现
package cn.lch.collections;

import java.util.List;
import java.util.ArrayList;
import java.util.Collections;

//测试Collections常用方法
public class CollectionsDemo1 {
	
	public static void main(String[] args) {
		List<String> list = new ArrayList<String>();
		list.add("hdf");
		list.add("jfgjh");
		list.add("fdsh");
		list.add("okdf ");
		list.add("add");
		list.add("fke");
		list.add("buke");
		list.add("apple");
		
		//打印输出集合中的最大值和最小值
		String strMax = (String)Collections.max(list);
		String strMin = (String)Collections.min(list);
		System.out.println(strMax+" - "+strMin);   //对英文字符串,会由字母的升序来分
		
		//升序排列
		Collections.sort(list);
		for(String str:list){
			System.out.println(str);
		}
		
		//查找
	System.out.println(Collections.binarySearch(list, "apple")); //返回的位置,负数代表没有
	
	//反转集合元素
	System.out.println("*****************");
	Collections.reverse(list);
	for(String str:list){
		System.out.println(str);
	}

	}
}

输出结果:
okdf  - add
add
apple
buke
fdsh
fke
hdf
jfgjh
okdf 
1
*****************
okdf 
jfgjh
hdf
fke
fdsh
buke
apple
add

Collections排序

  • Collections类可以对集合进行排序、查找和替换操作
  • 实现一个类的对象之间比较大小
    1.该类要实现Comparable接口
    2.重写compareTo()方法
package cn.lch.collections;

//创建Student类
public class Student implements Comparable {
	//学号  姓名  性别
	private int number;
	private String name;
	private String sex;
	

	public Student(){}
		public Student(int number,String name,String sex){
			this.number = number;
			this.name = name;
			this.sex = sex;
		}
		
		
		public int getNumber() {
			return number;
		}
		public void setNumber(int number) {
			this.number = number;
		}
	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public String getSex() {
		return sex;
	}

	public void setSex(String sex) {
		this.sex = sex;
	}
	
	//编写一个比较规则:让当前学员对象(this)和传过来的学员对象(o)比较
	//以学员的学号为比较规则
	@Override
	public int compareTo(Object o) {
		Student student = (Student)o;
		// TODO Auto-generated method stub
		if(this.number == student.number){
			return 0;
		}else if(this.number>student.number){
			return 1;
		}else{
			return -1;
		}
	
	}

}

package cn.lch.collections;

//Collections排序
import java.util.List;
import java.util.ArrayList;
import java.util.Collections;

//测试Collections常用方法
public class CollectionsDemo2 {
	
	public static void main(String[] args) {
		List<Student> list = new ArrayList<Student>();
		Student s1 = new Student(1,"赵如花","女");
		Student s2 = new Student(7,"马冬梅","女");
		Student s3 = new Student(6,"王大锤","男");
		Student s4 = new Student(8,"张三","男");
		
		list.add(s1);
		list.add(s2);
		
		list.add(s3);
		list.add(s4);
	
		//升序排列
		Collections.sort(list);
		for(Student stu:list){
			System.out.println(stu.getNumber()+" - "+stu.getName()+" - "+stu.getSex());
		}
	} 
}

输出结果:
1 - 赵如花 - 女
6 - 王大锤 - 男
7 - 马冬梅 - 女
8 - 张三 - 男
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值