java基础毕向东day14-15

1.(P169-171)

Collection

    |--List:元素是有序的,元素可以重复。因为该集合体系有索引。
        |--ArrayList:底层的数据结构使用的是数组结构。特点:查询速度很快。但是增删稍慢。线程不同步。
        |--LinkedList:底层使用的链表数据结构。特点:增删速度很快,查询稍慢。线程不同步。
        |--Vector:底层是数组数据结构。线程同步。被ArrayList替代了。因为效率低。


    |--Set:元素是无序,元素不可以重复。、


List:
    特有方法。凡是可以操作角标的方法都是该体系特有的方法。


    add(index,element);
    addAll(index,Collection);


    remove(index);


    set(index,element);

    get(index):
    subList(from,to);
    listIterator();
    int indexOf(obj):获取指定元素的位置。
    ListIterator listIterator();

List集合特有的迭代器。ListIterator是Iterator的子接口。

在迭代时,不可以通过集合对象的方法操作集合中的元素。
因为会发生ConcurrentModificationException异常。

所以,在迭代器时,只能用迭代器的放过操作元素,可是Iterator方法是有限的,
只能对元素进行判断,取出,删除的操作,
如果想要其他的操作如添加,修改等,就需要使用其子接口,ListIterator。

该接口只能通过List集合的listIterator方法获取。

 

2.(P173)LinkedList:特有方法:

addFirst();
addLast();

getFirst();
getLast();
获取元素,但不删除元素。如果集合中没有元素,会出现NoSuchElementException

removeFirst();
removeLast();
获取元素,但是元素被删除。如果集合中没有元素,会出现NoSuchElementException


在JDK1.6出现了替代方法。

offerFirst();
offerLast();


peekFirst();
peekLast();
获取元素,但不删除元素。如果集合中没有元素,会返回null。

pollFirst();
pollLast();
获取元素,但是元素被删除。如果集合中没有元素,会返回null。

 

3.(P174必须会!)结合LinkedList模拟堆栈或者队列数据结构

(P175必须会!)去除ArrayList中的重复元素

(P176必须会!)将自定义对象作为元素存到ArrayList集合中国,并去除重复元素,比如人,同姓名同年龄被视为同一个人,不进行重复存储。

知识点:List中判断存入的两个对象是否相等的方法是equals();  contain()和remove()方法底层依靠的都是equals();

4. (P178) ArrayList判断两个对象是否相等的方法是equals(); HashSet中判断两个元素是否相等的方法是hashcode()和equals(),如果hashcode()相等再比较equals();

5.

|--Set:元素是无序(存入和取出的顺序不一定一致),元素不可以重复。、
    |--HashSet:底层数据结构是哈希表。是线程不安全的。不同步。
            HashSet是如何保证元素唯一性的呢?
            是通过元素的两个方法,hashCode和equals来完成。
            如果元素的HashCode值相同,才会判断equals是否为true。
            如果元素的hashcode值不同,不会调用equals。

            注意,对于判断元素是否存在,以及删除等操作,依赖的方法是元素的hashcode和equals方法。


  

    |--TreeSet:可以对Set集合中的元素进行排序。
                底层数据结构是二叉树。
                保证元素唯一性的依据:
                compareTo方法return 0.

                TreeSet排序的第一种方式:让元素自身具备比较性。
                元素需要实现Comparable接口,覆盖compareTo方法。
                也种方式也成为元素的自然顺序,或者叫做默认顺序。

                TreeSet的第二种排序方式。
                当元素自身不具备比较性时,或者具备的比较性不是所需要的。
                这时就需要让集合自身具备比较性。
                在集合初始化时,就有了比较方式。 

     当两种排序都存在时,以比较器为主。

     定义一个类,实现Comparator接口,覆盖compare方法。

 

6

 

泛型:JDK1.5版本以后出现新特性。用于解决安全问题,是一个类型安全机制。

好处
1.将运行时期出现问题ClassCastException,转移到了编译时期。,
    方便于程序员解决问题。让运行时问题减少,安全。,

2,避免了强制转换麻烦。


泛型格式:通过<>来定义要操作的引用数据类型。

在使用java提供的对象时,什么时候写泛型呢?

通常在集合框架中很常见,
只要见到<>就要定义泛型。

其实<> 就是用来接收类型的。

当使用集合时,将集合中要存储的数据类型作为参数传递到<>中即可。

 

7.//(P15-08)泛型类。
/*
什么时候定义泛型类?
当类中要操作的引用数据类型不确定的时候,
早期定义Object来完成扩展。
现在定义泛型来完成扩展。

 

8. 泛型可以定义在方法上和类上。 1图是将泛型定义在类上,2图是讲泛型定义在方法上(也可以理解为在类上没有声明泛型型,所以要在方法上声明该泛型)

泛型的好处示例:  以前必须使用两个方法,现在使用泛型一个就够了。你传入的T是什么就是什么类型

 

  

 

 

9.Map集合:

Map集合:该集合存储键值对。一对一对往里存。而且要保证键的唯一性。
    1,添加。
        put(K key, V value) 
        putAll(Map<? extends K,? extends V> m) 

    2,删除。
        clear() 
        remove(Object key) 

    3,判断。
        containsValue(Object value) 
        containsKey(Object key) 
        isEmpty() 


    4,获取。
        get(Object key) 
        size() 
        values() 

        entrySet() 
        keySet() 

Map
    |--Hashtable:底层是哈希表数据结构,不可以存入null键null值。该集合是线程同步的。jdk1.0.效率低。
    |--HashMap:底层是哈希表数据结构,允许使用 null 值和 null 键,该集合是不同步的。将hashtable替代,jdk1.2.效率高。
    |--TreeMap:底层是二叉树数据结构。线程不同步。可以用于给map集合中的键进行排序。


和Set很像。
其实大家,Set底层就是使用了Map集合。

 

 


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值