去年听的桂老板的java 笔记不是本人做的
容器
集合在安卓中的应用:
客户端:将json对象或者json数组转化为java对象或者对象List
服务端:将Java对象或者对象List转化为Json对象或者Json数组(本质上是String)进行传输
Java集合可以分为Collection和Map两种体系,二者都是接口。
Collection存储的都是一个个的是对象,单列数据,主要分为List和Set(二者是Collection接口的子接口)。List和Set的主要区别是前者元素可以重复(位置具有特异性),后者元素不可以重复。
实线是继承(extends),虚线是实现(implement)关系。
JAVA比较器:Comparable和Comparator
< > <= >=用在基本类型肯定没啥问题,但是如何自定义对象的"大小"?
排序时必然涉及到比大小,不同标准的排序选取的依据也不同。
Java中对象正常情况下只能使用==或者!=进行比较,不适用< >,但实际开发中常常需要用到大小比较。
Comparable接口
使用Comparable来做的排序叫做自然排序。
String本身实现了Comparable接口,实现此接口需要实现compareTo方法
像String、包装类等实现了Comparable接口,给出了比较两个对象的依据。
重写compareTo()的规则:
当前对象this大于形参对象obj,则返回正整数;小于obj则返回负整数;等于则返回0。
集合的排序可以用伴生类Collections.sort()来进行。
public class ComparableTest {
public static void main(String[] args) {
List<CTest> arr = new ArrayList<CTest>();
arr.add(new CTest(10));
arr.add(new CTest(1));
Collections.sort(arr);
for(CTest c : arr) {
System.out.println(c.size);
}
}
}
class CTest implements Comparable<CTest>{
public int size;
public CTest(int size) {
this.size = size;
}
@Override
public int compareTo(CTest o) {
//此处可以用o instanceof CTest判断类型
return this.size - ((CTest)o).size;
}
}
如果使用的只是数组,比如CTest[] arr,排序可以用Array.sort()来进行。
Comparator接口
这种方式实现的排序叫做定制排序。
当元素类型没有实现Comparable接口,又不方便修改代码;或者Comparable接口的逻辑又不符合当前操作,那么可以考虑用Comparator来操作。
实现Comparable接口需要实现一个compare(Object o1, Object o2)方法,返回正数说明前面的的大,返回值的规则跟Comparable一样。
public class ComparableTest {
public static void main