Java基础之Comparable接口, Collections类,Iterator接口,泛型(Generic)
一、Comparable接口, Collections类
List的常用算法:
- sort(List); 排序,如果需要对自定义的类进行排序, 那就必须要让其实现Comparable接口, 实现比较两个类大小的方法
- shuffle(List); 随机排列
- void reverse(List); 逆序排列(Linked效率较高)
- copy(); 复制集合, 前提是size()相同(长度, 和容量的区别)
- fill(List, Object);使用某个对象填充整个List
- binarySearch();//使用二分搜索法之前先排序
例子:
package collectiontext; import java.util.ArrayList;
import java.util.Collections;
import java.util.List; public class Text2 {
@SuppressWarnings("unchecked")
public static void main(String[] args) {
List list = new ArrayList();
list.add("aaaa");
list.add("qqqq");
list.add("cccc");
list.add("xxxx");
System.out.println(list);
System.out.println("-------------------------"); //顺序排列
Collections.sort(list);//sort(List);排序,如果需要对自定义的类进行排序, 那就必须要让其实现Comparable接口,
//实现比较两个类大小的方法
System.out.println(list);
//随机排列
Collections.shuffle(list);//shuffle(List); 随机排列
System.out.println(list);
//反转排列(逆序排列)
Collections.reverse(list);//void reverse(List); 逆序排列(Linked效率较高)
System.out.println(list);
System.out.println("-------------------------"); List list2 = new ArrayList();
list2.add("1");
list2.add("2");
list2.add("3");
list2.add("4");
Collections.copy(list2, list);//copy();复制集合, 前提是size()相同(注意长度, 和容量的区别)
System.out.println(list2);
System.out.println("-------------------------"); Collections.fill(list2, new Person());//fill(List, Object);使用某个对象填充整个List
System.out.println(list2);
System.out.println("-------------------------"); List list3 = new ArrayList();
for (int i = 0; i < 10; i++) {
list3.add(i);
}
int a = Collections.binarySearch(list3, 8);//binarySearch();一定要注意,使用二分搜索法之前先排序,
//这里刚好是排好序的,不好看出来,但是一定要注意
System.out.println(a);
System.out.println(list3);
}
} class Person{ @Override
public String toString() {
return "Person []";
} }
二、泛型(Generic):里面写的一定是引用类型
1, 装入集合的类型都被当作Object对待, 从而失去了自己的实际类型
2, 集合中取出来的时候需要转型, 效率低, 易出错
好处: 增强程序的可读性和稳定性
例子:
package collectiontext; import java.util.ArrayList;
import java.util.List; public class Text3 {
public static void main(String[] args) {
List<String> list = new ArrayList<String>();//这个list里面只能装String类型的东西
List<Person2> list2 = new ArrayList<Person2>();//这个list里面只能装Person2类型的东西
List<Student> list3 = new ArrayList<Student>(); list.add("qqq");
list2.add(new Person2());
list2.add(new Student());//Student继承了Person,即父类的引用指向子类的对象,多态的问题
list3.add(new Student());
}
} class Person2{ //定义了一个Person2类,通俗一点,就是定义了一个Person2类型 } class Student extends Person2{ }
三、Comparable接口:一个方法(comparaTo)
int compareTo(T o)
将此对象与指定的对象进行比较以进行排序。
- 该对象小于指定对象,返回一个负整数(-1);
- 该对象等于指定对象,返回一个零(0);
- 该对象大于指定对象,返回一个正整数(1);
例子:
package collectiontext; import java.util.ArrayList;
import java.util.Collections;
import java.util.List; public class Text4 {
public static void main(String[] args) {
List<Animals> list = new ArrayList<Animals>();
for (int i = 0; i < 5; i++) {
list.add(new Animals("name" + i, i+5));
}
System.out.println(list);
Collections.sort(list);
System.out.println(list);
}
} class Animals implements Comparable<Animals> {
private String name;
private int age;
public Animals(String name, int age) {
super();
this.name = name;
this.age = age;
}
@Override
public int compareTo(Animals o) {
// TODO Auto-generated method stub
if(this.age > o.age){
return -1;
} else if(this.age < o.age){
return 1;
} else{
return this.name.compareTo(o.name);
}
}
@Override
public String toString() {
return "Animals [name=" + name + ", age=" + age + "]";
} }
Java基础之Comparable接口, Collections类,Iterator接口,泛型(Generic)的更多相关文章
- Java基础之Collection与Collections浅析
Java基础之Collection与Collections浅析 一.前言: 位于Java.util包下的Collection与Collections都是Java中重要的工具类,它们都是Java集合框架 ...
- Java基础系列-Comparable和Comparator
原创文章,转载请标注出处:<Java基础系列-Comparable和Comparator> 一.概述 Java中的排序是由Comparable和Comparator这两个接 ...
- Java基础之Comparable与Comparator
Java基础之Comparable与Comparator 一.前言: Java中实现对对象的排序一般情况下主要有以下两种实现方式(万物皆对象嘛): 对象所在的类实现Comparable 接口 定义比较 ...
- Java基础-DBCP连接池(BasicDataSource类)详解
Java基础-DBCP连接池(BasicDataSource类)详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 实际开发中“获得连接”或“释放资源”是非常消耗系统资源的两个过程 ...
- java中有关流操作的类和接口
一.java操作l流有关的类和接口 1.File 文件类 2.RandomAccessFile 随机存储文件类 3.InputStream 字节输入流 4.OutputStream 字节输出流 5.R ...
- Java基础-类加载机制与自定义类Java类加载器(ClassLoader)
Java基础-类加载机制与自定义类Java类加载器(ClassLoader) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 关于类加载器的概念和分类我就不再废话了,因为我在之前的笔 ...
- JAVA面向对象-----接口与类、接口之间的关系
接口与类.接口之间的关系 大家之前都知道类与类之间的关系继承,那么接口与类之间又是怎样子的关系呢? 接口与类之间是实现关系.非抽象类实现接口时,必须把接口里面的所有方法实现.类实现接口用关键字impl ...
- Java基础学习笔记十二 类、抽象类、接口作为方法参数和返回值以及常用API
不同修饰符使用细节 常用来修饰类.方法.变量的修饰符 public 权限修饰符,公共访问, 类,方法,成员变量 protected 权限修饰符,受保护访问, 方法,成员变量 默认什么也不写 也是一种权 ...
- java基础37 集合框架工具类Collections和数组操作工具类Arrays
一.集合框架工具类:Collections 1.1.Collections类的特点 该工具类中所有的方法都是静态的 1.2.Collections类的常用方法 binarySearch(List< ...
随机推荐
- Linux命令大总结
from http://elain.blog.51cto.com/3339379/623310 Linux命令大总结------------------------------------------ ...
- Linux基础学习1
安装问题 随意下载的:CentOS-5.5-i386-LiveCD-Release2.iso Live CD 是可以直接运行在内存当中的,而不是安装镜像. 如之前玩过的BT5一样,把BT5-LiveC ...
- php报错配置问题
在开发的时候php.ini ,要显示所有的错误 error_reporting=E_ALL | E_STRICT 在发布的时候可以显示除了notice之外的错误,打开错误记录功能 error_repo ...
- 【前端阅读】——《JavaScript应用开发技术详解指南》摘记&思维导图
读这本书,我主要关注三个部分:JavaScript内置函数,程序调试以及Ajax基础.由于多是介绍基本概念,所以,采用思维导图的方式,做了一个梳理,以下就是精简的主要内容. 注:转载请注明出处
- Java中对象、对象引用、堆、栈、值传递以及引用传递的详解
Java中对象.对象引用.堆.栈.值传递以及引用传递的详解 1.对象和对象引用的差别: (1).对象: 万物皆对象.对象是类的实例. 在Java中new是用来在堆上创建对象用的. 一个对象能够被多个引 ...
- Win7如何自定义鼠标右键菜单 添加用记事本打开
鼠标右键用记事本打开.reg Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\*\shell\Notepad] @="用记事本 ...
- 微信小程序 - 对象转换成对象数组
后端传过来的一个个对象 {1,2,3,4},{1,3,5,},{1,3,5} 我们应该转化为数组对象 [{},{},{},{}] ,最后通过wx:for遍历到页面 示例图:
- 移动端开发者福利-免费收费api收藏
一 .api 1.https://www.juhe.cn/ 跟百度api集市差不多,超级赞,做好认证就行了,我有20+认证能用的免费api 2.http://apistore.baidu.com/as ...
- vue class绑定方式
1.对象语法 <div class="static" v-bind:class="{ active: isActive, 'text-danger': hasErr ...
- HBase中Region, store, storefile和列簇的关系
转自:http://zhb-mccoy.iteye.com/blog/1543492 The HRegionServer opens the region and creates a correspo ...