找工作系列之java 【collection,泛型】

Collection:


不同于HashSet的根本就是TreeSet是有序的

Set则是在HashMap的基础上来实现的

TreeSet,它把对象添加到集中的操作将变为按照某种比较规则将其插入到有序的对象序列中。它实现的是SortedSet接口,也就是加入了对象比较的方法。是否意味着要添加进TreeSet的对象须实现某种排序方法呢。就像map里的hashCode()和equals()一样。

客户化排序和自然排序:

客户化排序:答案:写一个实现comparator接口的类,定义好compare方法,并用之初始化set对象即可。

自然排序:待排序类实现comparable接口并重写compareTo()方法

TreeSet对象获得第一个迭代器将按升序提供对象。TreeSet类使用了一个TreeMap【针对TreeSet】

重写hashCode()和equals方法【针对HashSet】


要添加到map中的定义键的类必须实现hashcode()方法和equal()方法

HashMap: 实现一个映象,允许存储空对象,而且允许键是空(由于键必须是唯一的,当然只能有一个).HashMap虽然不支持同步,但是可以用Map.synchronizeMap(HashMap map)方法返回一个支持同步的map。

TreeMap: 实现这样一个映象,对象是按键升序排列的

在《Practical Java》一书中Peter Haggar建议使用一个简单的数组(Array)来代替Vector或ArrayList。尤其是对于执行效率要求高的程序更应如此。因为使用数组(Array)避免了同步、额外的方法调用和不必要的重新分配空间的操作


Collection类的客户化排序:  Collections.sort(list,new Mycomparator());



泛型:

方法能够接受的参数必须是预定义参数的子类型,如下方法可以针对泛型编程处理类型安全

有界通配符:

public void drawAll(List<? extends Shape> shapes) { ... }
使用通配符带来的灵活性得要付出一定的代价;代码就是现在在方法里面不能对Shape对象插入元素。例如,下面的写法是不允许的:
public void addRectangle(List<? extends Shape> shapes) {
shapes.add(0, new Rectangle()); //编译错误
}
static <T> void fromArrayToCollection(T[]a, Collection<T> c){
for (T o : a){
c.add(o);//<span style="" font-size:"="">正确
}
}


Lambda表达式:

()->output;

只针对 只有一个函数的functional Interface,可以解决vertical hiararchy问题。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值