java基础 Java集合总结

集合,常用的接口,Collection,List Set,Map

用来管理/容纳多个对象的对象(或称为容器);

面向对象可重用性的体现,对数组作了功能封装。

Collection是一个接口:是以对象为单位来管理元素的。

      基本操作:add  remove size

      遍历:迭代遍历

有两个子接口:List接口和Set接口

1,List接口:元素是有顺序(下标),可以重复。有点像数组。可以用迭代器(Iterator)和数组遍历集合。

      List接口里本身有自己的方法,还有从父接口Collection里继承的方法。

      remove(int)删除某一位置的对象、add(int,Object)往某一位置插入对象 、get(int)查询某一位置上的元素。

      遍历:迭代遍历、for遍历

      Collections.sort(list); 引入list集合然后对list集合里的对象(如:Student类)进行排序时,

      只要在让对象(类)实现Comparable接口,再覆盖接口里面的方法(compareTo()方法),

      在compareTo()方法里写出进行什么样的方式排序,

      Public int compareTo(Object o){

         Work w=(Work)o;

       If(this.salary!=w.salary){return(int)w.salary-(int)this.salary;}

       Else If(this.age!=w.age){returnw.age-this.age;}else  retuenthis.name.compareTo(w.name);sss

}

      然后在主函数里使用Collections.sort(list);  ,就对list里的对象进行排序了,

      而不用管Collections.sort()方法是怎么实现的,既不用管Collections.sort()方法的实现体。

      排序规则:对象实现Comparable接口,覆盖compareTo()方法,Collections.sort(List);

     

1ArrayList集合类实现List接口,轻量级,底层是以数组实现的,查询快,增删慢,线程不安全,用get(int)方法多时,

 Vector集合也实现List接口,底层也是以数组实现的。但这个类已经放弃了。重量级,查询慢,增删快,线程安全。(Vector和HashTable是线程同步的(synchronized),所以线程安全。性能上,ArrayList和HashMap分别比Vector和Hashtable要好。)

2)LinkedList集合类实现List接口,他底层是以链表实现的,查询慢,增删快,

           用remove(int)、add(int,Object)方法多时,

           自己实现栈(stack),并对栈里进行增删操作。

           class MyStack{

                 private LinkedListlist=new LinkedList();

                 public void push(Objecto){

                      list.addFirst(o);

                 }

                 public voidpop(Object o){

                      list.removeFirst();}}

2,Set接口无顺序,不可以重复(内容不重复,而非地址不重复)。只能用迭代器(Iterator)遍历集合。

      Set接口里本身无方法,方法都是从父接口Collection里继承的,

      遍历:迭代遍历

      实现类:保证元素内容不重复。

1)HashSet集合类实现Set接口,底层是以数组实现的。HashSet集合里不允许有重复对象

      每向HashSet集合类里添加一个对象时,先使用HashSet集合类里add(o)方法,

      再调用对象o的hashCode()方法算出哈稀码,保证相同对象返回相同的哈希码。

      如果哈稀码一样,再调用对象o里的equals()方法对对象的属性进行比较是否相等,

集合也可以构造集合,如:List<Object> list=new ArrayList<Object>();Set<Object> set=new HashSet<Object>(list);原来在list集合里的对象是可以重复的,但被set集合构造之后,重复的对象将被去掉

按这三种顺序来理解接口:    1)接口特点;2)接口常见操作(方法);3)接口实现类的特点

Map:对应一个键对象和一个值对象,可以根据key找value,

      (Key--value)不可重复且无序--可重复

      排序(SortedMap是Map的子接口):TreeMap类实现SortedMap接口;对集合进行排序。

      基本操作:put()  get()

      遍历:键遍历  ketSet()返回键的集合(Set)(说明map的键是用set实现的,不能重复)

              值遍历 values()返回值的集合。

      HashMap类实现Map接口:     查询快,线程不安全,允许键和值对象为null

      Hashtable类实现Map接口:查询慢,线程安全

      TreeMap类实现Map接口:SortedMap的实现类,自动对键进行排序。


 

Iterator 实例

Static void printValue(Map map){

  Collection col=map.values();

Iterator it=col.iterator();

  While(it.hasNext()){

Objectobj=it.next();…;

}}

 

 

 

Jdk1.5新特性加了forEach循环方便数组和集合的遍历(是在泛型的基础上提出的)

Static void printValue(Map<Integer Product> map){

  Set<Integer> s=map.ketSet();

For(Integer i:s){xxxx}

}

注意:如果需要定位,就得用“普通”的 for,在列表遍历期间无法删除集合对象。


 

课外考题、Collection 和 Collections 的区别。

Collection 是集合类的上级接口,继承与他的接口主要有Set 和List.

Collections 是针对集合类的一个帮助类,他提供一系列静态方法实现对各种集合的搜索、排序、线

程安全化等操作


说出 ArrayList,Vector, LinkedList 的存储性能和特性

ArrayList Vector都是使用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插

入元素,它们都允许直接按序号索引元素,但是插入元素要涉及数组元素移动等内存操作,所以索引

数据快而插入数据慢,Vector由于使用了synchronized方法(线程安全),通常性能上较ArrayList

差,而LinkedList使用双向链表实现存储,按序号索引数据需要进行前向或后向遍历,但是插入数

据时只需要记录本项的前后项即可,所以插入速度较快。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值