快速了解java集合容器

目录

一.集合容器

二.Collection接口

三.Iterator接口

四.foreach循环

五.List接口

六.Set接口

七.Map接口


一.集合容器

集合容器:一些可以存储任意类型对象并且长度可变的特殊类

集合容器共分为两种类型:

(1)集合(Collection):一个集合就是存储一组对象的容器,java集合框架支持集合(Set)和列表(List)两种类型的集合

·Set(集):集合中的对象,没有次序之分,且没有重复对象

·List(列表):集合中的对象按照索引位置排序,可以有重复对象,可以按索引位置查找对象

(2)映射(Map):集合中的每一个对象都由一个特殊的“键—值”对组成。键对象不能重复,值对象可以重复

二.Collection接口

Collection是最基本的集合接口,是List和Set接口的父接口

Collection接口
操作类型方法声明功能描述
添加删除基本操作boolean add(Object o)添加指定的对象o到集合中
boolean remove(Object o)从集合中移除指定对象
查询操作int size()返回集合的对象个数
boolean isEmpty()如果集合中不包含对象,则返回true
boolean contains(Object o)如果集合中包含对象,则返回true
Iterator<>iterator()返回该集合的遍历对象
成组操作void clear()从集合中删除所有元素

boolean removeAll(Collection

c)

从集合中删除c中所有元素
boolean containsAll(Collection c)判断集合中是否包含c中的所有元素
boolean addAll(Collection c)将c中所有元素添加到集合中

例子:

三.Iterator接口

Iterator对象也被称为迭代器,主要用于迭代访问Collection中的元素,主要方法如下:

·boolean hasNext():判断是否存在另一个可以访问的元素

·Object next():返回下一个可以访问的对象

·void remove():删除上一次访问返回的对象

例子:

public class CollectionDemo {
    public static void main(String[] args) {
        Collection collection=new ArrayList();  //创建集合对象
        collection.add("hello");    //添加元素
        collection.add("world");
      Iterator iterator=collection.iterator();    //获得一个迭代器对象
        while(iterator.hasNext()){
            Object object=iterator.next();
            System.out.println(object);     //输出hello  world
        }
    }
}

四.foreach循环

forreach是加强版的for循环,用于数组或集合中的元素,其语法格式为:

for(容器中的对象类型 临时变量名:容器变量){
执行语句
}

例子:

public class CollectionDemo {
    public static void main(String[] args) {
        Collection collection=new ArrayList();  //创建集合对象
        collection.add("hello");    //添加元素
        collection.add("world");
        collection.add("hello");
        collection.add("time");
        //用forreach遍历元素
        for (Object object:collection) {
            System.out.println(object);       //输出元素
        }
    }
}

五.List接口

List容器是最常用的,其元素可以重复,可以按顺序容纳,提取元素,List接口下有ArrayList,LinkedList,Stack和Vector等实现

ArrayList集合:存储结构是Object数组,增加删除数据时可能会牵涉到数组的扩容,复制以及元素的整体移动,效率慢,但可以通过数组名和索引直接定位查询元素

LinkedList集合:存储的结构是双向链表结构,方便元素的增加和删除,直接找到要插入的前置节点和后置节点来进行插入和删除操作,但查找慢,因为底层采用二分法的查找算法

List接口的常用方法
方法声明功能描述
void Add(Object obj)将指定元素obj添加到列表的尾部
void Add(int index,Object c)将指定元素添加到列表的指定位index
boolean addAll(int index, Collection)将集合c中的元素添加到指定位置index
Object get(int index)返回列表中指定位置的元素
int indexOf(Object obj)返回第一次出现obj的位置,-1表示无此元素
int lastIndexOf(Object obj)返回最后一次出现obj的位置,-1表示无此元素
boolean add(Object o)添加指定对象o到集合中
boolean remove(Object o)从此集合中移除指定对象o
Object remove(int index)删除指定位置的元素

例子:

public class CollectionDemo {
    public static void main(String[] args) {
        List list=new LinkedList();
        list.add("黎明");
        list.add("郭富城");
        list.add("张学友");
        System.out.println("List元素:");
        for (Object obj:list) {
            System.out.print(obj+"\t");
        }
        System.out.println();
        list.add(1,"刘德华");
        list.add(3,"小马哥");
        System.out.println("添加后List元素:");
        for (Object obj:list) {
            System.out.print(obj+"\t");
        }
    }
}

六.Set接口

Set接口继承Collection接口,与List接口比较相似,但又有如下差异:

·Set中不保存重复的元素,但List中保存

·Set中不能保证元素顺序信息,但List中元素的顺序是确定的

Set接口的实现有HashSet,TreeSet,EnumSet等

HashSet集合:底层实现是HashMap,采用哈希表存储结构,优点是添加,查询,删除速度快,缺点是无序

TreeSet集合:底层是TreeMap,采用二叉树的存储结构,优点是有序,查询速度比List快,缺点是查询速度没有HashSet快

EnumSet:枚举查询

Set接口的常用方法
方法声明功能描述
int size()返回Set中元素的个数
boolean isEmpty()如果Set中不包含对象,则返回true
boolean contains(Object o)如果Set中包含o对象,则返回true
Iterator iterator()返回Set中元素的迭代器
boolean add(Object o)如果Set中不包含指定对象o,则将其添加到Set中
boolean remove(Object o)如果Set中包含o对象,则将其删除

boolean removeAll(Collection c)

从Set中删除所有元素
boolean containsAll(Collenction c)判断Set中是否包含所有元素

boolean addAll(Collection c)

将c中所有元素添加到Set中
void clear()从Set中删除所有元素

例子:

public class CollectionDemo {
    public static void main(String[] args) {
     Set set=new HashSet<>();
        set.add("郭富城");
        set.add("黎明");
        set.add("张学友");
        set.add("刘德华");
        System.out.println("set中原有元素:");
        Iterator iterator=set.iterator();
        while (iterator.hasNext()){     //set元素只能通过迭代器遍历
            Object o=iterator.next();
            System.out.print(o+"\t");
        }
        set.add("黎明");   //添加相同元素
        set.add("小马哥");
        System.out.println("添加后set中元素");
        iterator=set.iterator();
        while (iterator.hasNext()){
            Object o=iterator.next();
            System.out.print(o+"\t");
        }
    }
}

//输出  
 set中原有元素:
黎明	郭富城	张学友	刘德华	
添加后set中元素
黎明	郭富城	小马哥	张学友	刘德华	

七.Map接口

Map是一种将键对象和值对象进行关联的容器,Map中的一个元素就是一个“键—值”对,其中键对象不允许重复,但值对象运行重复,通常用Hashtable,HashMap,TreeMap来实现

Map接口的常用方法
方法声明功能描述
void clear()删除Map对象中所有“键—值”对
Set keySet()返回该Map中所有键所组成的Set集合
Set entrySet()返回该Map中所有“键—值”对组成的集合
Collection values()返回该Map中所有value所组成的Collection集合
boolean containsKey(Object key)查询Map中是否包含指定的键
boolean containsValue(Object value)查询Map中是否包含指定的值
Object get(Object key)返回指定键对应的值,若值不存在,则返回NULL
boolean isEmpty()查询该Map是否为空
Object put(Object key,Object value)

在Map中添加或覆盖一个“键—值”对

Object remove(Object key)删除指定键所对应的“键—值”对,返回被删除键所在关联的值
int size()返回该Map中“键—值”对的个数

例子:

public class CollectionDemo {
    public static void main(String[] args) {
   Map map=new HashMap();
   map.put(1,"黎明");
   map.put(2,"郭富城");
   map.put(3,"张学友");
   map.put(4,"刘烨");
   map.put(4,"刘德华");    //新的值将会覆盖原有的值
   boolean isContainKey=map.containsKey(1);   //查询是否存在相应的键
        System.out.println("是否有1号:"+isContainKey);
        Object obj= map.get(2);     //查询指定键的值
        System.out.println("1号是:"+obj);
        boolean isContainValue= map.containsValue("刘德华");   //查询是否有相应的值
        System.out.println("是否有刘德华:"+isContainValue);
        Set entry=map.entrySet();   //返回此映射的“键—值”图
        Iterator iterator=entry.iterator();
        System.out.println("键—值关系图:");
        while (iterator.hasNext()){
            Object o=iterator.next();
            System.out.println(o);
        }
    }
}
//输出:
是否有1号:true
1号是:郭富城
是否有刘德华:true
键—值关系图:
1=黎明
2=郭富城
3=张学友
4=刘德华

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

前段被迫创业

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值