java类集

1、类集:一个动态的对象数组。--不受对象数组长度的限制。

   (1)实用类的形式实现的对象数组,对于任何对象所有的操作形式都是一样的。

   (2)类集中的元素类型都是统一的。

2、类集框架的主要接口

   (1)Collection接口:单值存放的最大父接口。可存放多个单值。此接口使用泛型

         <1>.List接口:可存放重复内容。

             List中插入的顺序就是保存的顺序。

比较点

ArrayList子类:

   Vector子类:

推出时间

JDK 1.2之后,新的操作

JDK1.0时推出,旧的操作

性能

异步处理方式,性能高

同步处理方式,性能低

线程安全

非线程安全操作

线程安全操作

输出

Iteratorforeach输出

IteratorforeachEnumeration输出

 

        <2>.Set接口:不能存放重复内容,重复内容需hashCode()equals()方法区分 。

            Set方法和Collection方法一致,无法像List一样实现双向输出。因为Set中   没有get()方法。

                HashSet插入的顺序并不是集合中保存的顺序。采用散列的存储方式,没有顺序。

                TreeSet可以对输入的数据进行有序排序。TreeSet中的元素是有序存放的,所以对于一个对象必须指定好其排序规则,且TreeSet中的每个对象所在的类都必须实现Comparable接口才可以正常使用。(只实现Comparable接口若换成HashSet则也会出现重复内容,所以并不是真正意义上去掉重复元素。需要使用equals()方法和hashCode()方法)

      Set接口依靠equals()方法和hashCode()方法完重复元素判断。

      TreeSet依靠Comparable接口完成排序。

         <3>.Queue接口:队列接口。

            LinkedList子类:表示链表的操作类。采用先进先出的操作方式

             找到链表头操作:public E element()==>找到表头

                             public E peek()==>找到不删除表头

                             public E poll()==>找到并删除表头

                

         <4>.SortedSet接口:可对集合中数据进行排序。TreeSet中实现了SortedSet接口。

Java中很少直接使用Collection接口进行开发,基本上使用其子接口。

  (2)Map接口:存放一对值的最大父接口。以key->value形式保存。Map接口也应用了泛型,必须同时设置keyvalue的类型。

  

Map接口使用注意事项:

     A、不能直接使用迭代(Iteratorforeach)输出Map中全部内容。步骤:将Map接口实例通过entrySet()方法变为Set接口对象。->通过Set接口实例为Iterator实例化。->通过Iterator迭代输出,每个内容都是Map.Entry的对象。->通过Map.Entry进行key->value的分离

   B、直接使用非系统类作为key:使用自定义的对象表示Map中的key,则对象所在的类中一定要覆写equals()hashCode()方法,否则无法通过匿名对象找到对应的value

 

      Map.Entry接口是Map内部定义的一个接口,专门用来保存key->value的内容。实际上将“key->value”的数据保存在Map.Entry接口的实例之后,再在Map集合中插入Map.Entry的实例化对象。(Map.Entry在集合的输出时会使用到)

      Map.Entry接口使用static关键字声明的内部类,可以由“外部类.内部类”直接调用。

     子类:HashMap:无序存放,新操作,key不允许重复。

           提供keySet()方法将Map接口中全部key变为一个Set集合,使用Iterator接口输出

           提供values()方法,将全部value值返回为Collection类型。

              Hashtable:无序存放,旧操作,key不允许重复。Map中的key不允许重复,重复就是覆盖。

              TreeMap:可以排序的Map集合,按集合中的key排序,key不允许重复。自定义作为key的类型时需要实现Comparable接口。

              WeakHashMap:弱引用的Map集合,当集合中的某些内容不再使用时清除掉无用的数据,使用gc进行回收。

             IndentityHashMap:key可以重复的Map集合。key值允许重复只要两个对象的地址不同

比较点

HashMap

Hashtable

推出时间

新的操作类

旧的操作类

性能

异步处理方式,性能高

同步处理方式,性能低

线程安全

非线程安全的操作类

线程安全的操作类

空键

允许key值为null

不允许key值为null

 

        <1> SortedMap接口:存放一对值的排序接口。内容按照key排序。

3.集合的输出:如果输出CollectionSet集合中的内容可以将其转化为对象数组输出,而使用List则可以直接通过get()方法输出。

类集中提供了四种输出方式:(1)Iterator迭代输出,使用最多(通过get()方法)

                          (2)ListIterator:Iterator的子接口,专门用于输出List内容

                          (3)Enumeration:旧的接口,功能与Iterator类似

                          (4)foreach:可以输出数组和集合。

(1)、Iterator迭代输出(从前往后单项输出):Iterator接口使用时需要制定泛型,此处指定的泛型类型需要与集合中的泛型类型一致。

     Iterator是一个接口,可以直接使用Collection接口中的iterator()方法为其实例化。则ListSet子接口也可以使用Iterator接口输出。

     Iterator接口很少调用删除操作,Iterator自身存在remove()方法,若在Iterator迭代输出过程中使用了List中的remove()方法则代码会出现错误(内容确实被删除但是迭代输出在内容删除后就终止)

(2)、ListIterator接口:由前向后或者由后向前双向输出。(进行双向输出时,若想完成由后向前输出,则一定先进行由后向前输出)

        ListIterator接口只能通过List接口实例化,即只能输出List接口中的内容。

(3)、foreach输出:除了可以完成数组的输出对于集合的输出也同样支持。

(4)、Enumeration接口:最早的迭代输出接口,使用Vector时就使用Enumeration接口进行输出。(使用Vector类中的elements()方法取得一个Enumeration接口的实例)

      此接口中没有删除数据的方法,方法名的定义比Iterator中方法名长。

4.Collections和Collection关系:Collection为接口Collections为工具类

                                                        Collections类与Collection接口无直接关系,但与集合中各接口都有操作方法支持。

5.Stack类:采用先进后出的数据存储方式。Stack类是Vector的子类。

6.Properties属性类:本身是Hashtable的子类,在一个属性文件中保存了多个属性,每个属性就是直接用字符串表示出来的“key->value对”.

          属性类可以将其内容保存到文件中,使用store()方法,同时指定OutputStream类型,指定输出位置。属性文件后缀任意,一般统一设置“*.properties”。也可以将全部内容以XML格式通过输入输出流保存在XML文件中,后缀为“*.xml”

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值