Java类集

本文深入解析Java集合框架,包括Collection、List、Set、Map等核心接口及其子类的特性与应用,如ArrayList、HashSet、HashMap,并探讨了Iterator迭代输出及自定义类在集合中的运用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

类集就是一组Java实现的数据结构,或者说所谓类集指的就是对象数组的应用(动态对象数组)。

对象数组存在长度固定的问题。

在整个类集中,有一下几个核心接口:

  • Collection,List,Set;
  • Map;
  • Iterator,Enumeration.

一、Collection接口

Collection是这个类集之中单值保存的最大父接口,即:每次可以向集合里面保存一个对象。有两个主要子接口:List(允许重复)、Set(不允许重复)。

(一)List是Collection最常用的子接口。如果想要使用此接口进行操作,就必须存在有子类,可以使用Arraylist(90%)、Vetor(在java图形界面编程中还可以见到)子类进行操作。

  1. List中数据保存顺序就是数据的添加顺序;
  2. List集合中可以保存重复元素;
  3. LIst接口比Collection接口扩充了一个get()方法;
  4. List选择子类就使用ArrayList。

(二)Set是Collection的另一个常用子接口(20%),set接口没有像List接口那样对Collection接口进行大量扩充,而是简单继承了Collection接口。也就没有了之前List集合所提供的get()方法。

    Set接口下有两个常用子类:HashSetTreeSet

  1. Set集合下没有重复元素
  2. HashSet中元素是无序排列的,TreeSet中元素是自动排序的。
  3. 在开发中Set不是首选,但真要使用建议使用HashSet子类;
  4. 在非排序的情况下,只要是判断重复元素依靠的永远是Object类中提供的hashCode()和equals()(Comparable接口只能负责TreeSet子类(有序)进行重复元素的判断)如果是比较自定义类对象,则必须重写自定义类的hashCode()和equals()方法。

(三)集合输出

jdk1.8之前支持四种输出:Itrator(95%)、ListIterator、Enumeration(4.9%)、foreach。

1.迭代输出:Iterator(核心)

如果遇到集合操作,一般而言会使用Iterator接口进行结合输出操作。Iterator办事是一个接口,要详情取得本接口实例化只能依靠Collection接口,Collection接口里定义有如下一个操作方法: public Iterator<E> iterator()  

//以HashSet举例 
Set<String> all = new HashSet<String>();
all.add("Hello");
all.add("world");
Iterator<String> iter = all.iterator();
while (iter.hasNext()){
    String str = iter.next();
    System.ot.println(str);
}

 。。。

二、Map接口

Collection每次都只会保存一个对象,而Map主要是负责保存一对对象(key=value)的信息。

Map接口中常用方法:

    V   put(K key, V value)向集合中保存数据
     V    get(Object key)根据key查找对应的value数据
Set<Map.Entry<K,V>> entrySet()  将Map集合转换为Set集合
Set<K>keySet()取出全部key

在Map接口下有两个常用子类:HashMap(允许key或value内容为null)(90%)、Hashtable(不允许null)(10%)。

  • HashMap定义的Map集合是无序存放的(顺序无用);
  • HashMap中key不能重复,如果发现出现重复的key会进行覆盖,使用新的内容替换旧的内容。

在Map方法中提供有get方法,这个方法的主要功能是根据key查找所需要的value(如果key不存在,返回null)。在使用Map接口时可以发现,几乎可以使用任意类型作为key或value的存在,那么也就表明可以使用自定义的类型作为key。那么这个作为key的自定义类必须覆写Object类中的hashCode()和equals()方法,因为只有靠这两个方法才能判断元素是否重复,而在Map中指的是是否能找到。(使用Map时,首选key是String,尽量不要使用自定义类型作为key)。

可以发现,Map存放数据的最终目的就是为了信息查找,而Collection存放数据的目的是为了输出

三、stack(Vector的子类)

stack表示的是栈操作,栈是一种先进后出的数据结构。Stack是Vector的子类,但是不会用Vector类的方法,它有自己的方法:

  • 入栈:public E push(E item);
  • 出栈:public E pop()。

转载于:https://my.oschina.net/u/3963749/blog/2244799

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值