A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 左岸那片海 中级黑马   /  2015-8-22 21:42  /  444 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

List:特有方法。凡是可以操作角标的方法都是该体系特有方法。
增 add(index,element);addAll(index,Collection);
删 remove(index)
改 set(index,element);
查 get(index);subList(from,to);ListIterator

List集合特有的迭代器ListIterator

在迭代时,不能通过集合对象的方法操作集合中的元素,会发生并发异常。只能通过迭代器的方法操作。

List:元素是有序的,元素可以重复
   |---ArrayList:底层是数组结构,特点:查询很快,增删稍慢,线程不同步
   |---LinkedList:底层是链表结构,特点:查询稍慢,增删很快
   |---Vector:底层是数组数据结构,线程同步,被ArrayList替代了。
Set;元素是无序的,元素不可重复
  |--HashSet:底层数据结构是哈希表,线程不同步
        HashSet是如何保证元素的唯一性呢?是通过两个方法 hashCode和equals来完成。
        如果元素的hashCode相同,才会判断equals是否为true,如果哈希值不同,不会调用equals
  |--TreeSet:底层数据结构是二叉树,可以对Set集合中的元素进行排序。
        保证元素的唯一性的依据:compareTo方法return 0;
        如何排序的第一种方法:让元素自身具备比较性。
          实现接口Comparable,复写里面的compareTo方法,如果还有次要条件则继续compareTo比较,也称为自然排序。
        第二种方法:当元素自身不具备比较性时,或者具备的比较性不是所需要的。这时就需要让集合自身具备比较性。
          在集合初始化时,就有了比较方式。定义了比较器,并传给构造函数。定义一个类实现Comparator接口,覆盖compare方法。
          这种方法比较常用。
        当两种排序逗存在时,以比较器为主。

LinkedList:特有方法:
addFirst();
addLast();

getFirst();
getLast();
获取元素,但不删除元素

removeFirst();
removeLast();
获取元素,但是元素被删除

JDK1.6的方法:
offerFirst();
offerLast();
添加元素

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

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

****List集合判断元素是否相同时,依据的是元素的equals方法。

泛型:好处,将运行时的ClassCastException,转移到了编译时期,方便于程序员解决问题,安全。避免了强制转换的麻烦。
泛型类:
class Utils<QQ>{
  private QQ q;
  public void setObject(QQ q){
    this.q = q;
  }
  public QQ getObject(){
    return q;
  }
}
什么时候定义泛型类?当类中要操作的引用数据类型不确定的时候。
泛型方法定义:
public <T> void show(T t){
  System.out.println("show:"+t);
}

**静态方法不可以访问类上定义的方法,(泛型随着对象的产生而出现)只能给方法上定义泛型
pubic static <W> voif method(W t){}


*****
?通配符。也可以理解为占位符
泛型的限定:
? extends E:可以接受E或者E类型的子类。上限。
? super E:可以接收E类型或者E类型的父类。下限。

***Map集合:该集合存储键值对,一堆一堆存,而且要保证健的唯一性。
1.添加  put(K,V);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();

|---HashTable:底层是哈希表数据结构,不可以存入null健null值。该集合是线程同步的。jsk1.0,效率低。

|---HashTable:底层是哈希表数据结构,允许存入null健null值。该集合是线程不同步的。jsk1.5,效率高。

|---TreeMap:底层是二叉树数据结构,线程不同步,可以用于给map集合中的健进行排序。

只要往HashSet里面存,对象里面就需要复写hashCode(){return mane.hashCoed()+age*34}和
public boolean equals(Object obj){
   if(!(obj instanceof Student))throw new ClassCastException("类型不匹配");
   Student s = (Student)obj;
   return this.name.equlas(s.name) && this.age==s.age;
}

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马