继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

持有对象和异常

30秒到达战场
关注TA
已关注
手记 286
粉丝 95
获赞 569

一、持有对象

Java提供了多种容器来解决持有对象问题,包括List、Set、Queue、Map。

  • Set对于每个值都保存一个对象

  • Map是允许你将某些对象与其他一些对象关联起来的关联数组。

PS:在编程时,你可以将任意数量的的对象放置到容器中,并且不需要担心容器应该设置为多大。

@SuppressWarnings注解可以用来一直警告信息。

@SuppressWarnings("unchecked")表示只有有关“不受检查的异常”的警告信息应该被抑制。

使用泛型来限定容器内的对象类型

向上转型也可以像作用于其他类型一样作用于泛型。

Arrays和Collections类中都有很多实用方法,可以在一个Collection中添加一组元素。

Arrays.asList()方法接受一个数组或者是一个逗号分隔的元素列表(使用可变参数),并将其转换为一个List对象。该List底层标识的数组,因此不能去调整尺寸。如果试图用add()或delete()方法在这种列表中添加或者删除元素,就有可能会引发去改变数组尺寸的尝试。

Collections.addAll()方法接受一个Collection对象,以及一个数组或则一个用逗号分隔的列表,将元素添加到Collection中。

迭代器

ListIterator 是一个更加强大的Iterator子类型,它只能用于各种List类的访问。

Iterator只能向前移动,但是ListIterator可以双向移动。

可以产生当前指向位置的前一个和后一个元素的索引。

可以使用set()方法替换它访问过的最后一个元素。

通过调用listIterator方法产生ListIterator。

通过调用listIterator(n)创建一个一开始就指向列表索引为n的元素处的ListInterator。

public class ListIteration{
    public static void main(String[] args){
        List<Pet> pets = Pets.arrayList(8);
        ListIterator<Pet> it = pets.listIterator();
        while(){
            System.out.print(it.next()+","+it.nextIndex() + ","+ it.previousIndex() + "; ");
        }
        System.out.println();
        while(it.hasPrevious() + ""){
            System.out.println(it.previous().id() + " ");
                   
        }
        System.out.println(pets); 
        it  = pets.listIterator(3);
    while(it.hasNext()){
it.next();
it.set(Pets.randomPet());
}
System.out.println(pets);

}}

Map 是一种将对象而非数字,与对象关联的设计。

HashMap设计用来快速访问;

TreeMap保持“键”始终处于排序状态,所以没有HashMap快;

LinkedHashMap保持元素插入的顺序,但是也通过散列提供了快速访问能力;

public class Apple{
  private static long counter;
  private final long id = counter++;
  public long id(){
    return id;
}
}
public class Orange{}


  1.   


public class ApplesAndOrangesWithGenerics{
    public static void main(String[] args){
    ArrayList<Apple> apples = new ArrayList<Apple>();
    for(int i=0;i<3;i++){
    apples.add(new Apple());
    //编译出错
    //apples.add(new Orange());
    
    }
    for(int i=0;i<apples.size();i++){
    System.out.println(apples.get(i).id());
    }
    //使用foreanch
    for(Apple a:apples){
        System.out.println(a.id());
    }
}
}

二、异常

异常的产生

同其他对象的创建一样,Java使用new在堆上创建异常对象。

在使用new创建了异常对象之后,此对象的引用将传给throw;

异常处理紧跟在try块之后。当异常被抛出时,异常处理机制将负责搜寻参数与异常类型相匹配的第一个处理程序。然后进入catch子句执行,一旦catch子句结束,则处理程序的查找过程结束。

                                                                                               


  1.   

原文出处

打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP