JAVA-20191209

本文详细介绍了Java中的集合框架,包括Collection接口、List接口(ArrayList、LinkedList、Vector)、Set接口(HashSet、LinkedHashSet、TreeSet)以及Map接口(HashMap、LinkedHashMap、TreeMap、HashTable、Properties)。重点讲解了Comparable和Comparator接口在排序中的应用,以及集合遍历的各种方式,如Iterator和增强型For Loop。此外,文章还深入分析了ArrayList和HashMap的底层实现,包括扩容策略和数据结构的优化。
摘要由CSDN通过智能技术生成

去年听的桂老板的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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值