首页 > 编程语言 >Java中常用容器总结

Java中常用容器总结

时间:2022-12-04 20:00:27浏览次数:64  
标签:总结 容器 Set Java Map Object boolean key 元素

1、Collection接口

数据都是单个单个的存储在其中的。

常用方法:

      boolean   add(Object element)           添加元素

      boolean   remove(Object element)       删除元素

      boolean   contains(Object element)          查找该元素,没有返回false,有则返回位置。

      int   size()                   返回容器大小。

      boolean   isEmpty()              是否为空的。

      void    clear()                 清空容器。

      Iterator   interator()                获取迭代器。

      boolean    containsAll(Collection  c)        是否包含c容器中所有元素。

      boolean    addAll(Collection c)           把c中的所有元素加到此容器中。

      boolean    remove(Collection  c)           移除本容器和c都有的元素。

      boolean    retainAll(Collection  c)          留下和c的交集。

      Object []    toObject()                转化成Object数组。

1.1 List接口

继承了Collection接口,有序!可以通过索引进行操作。(有序指的是存放顺序与放入顺序一致)

常用方法:

      void   add(int index ,Object e)        在指定位置插入元素。

      Object    set(int index , Object  e)        修改指定位置元素。

      Object    get(int index)            获取指定位置元素。

      Object    remove(int index);         删除指定位置元素。

      int   indexOf(Object  o)           返回该元素第一次出现的位置。

      int   lastIndexOf(Object   o)         返回该元素最后一次出现的位置。

实现类:

      ArryList        内部使用一个会自己扩容的数组实现,查询效率高,增删效率低,线程不安全。

      LinkedList    内部使用双向链表实现,查询效率低,增删效率高,线程不安全。

      Vector     使用数组实现的,它相关方法增加了同步检查,线程安全!

1.2 Set接口

继承了Collection接口,元素不能重复,无序。(无序指的是存放顺序与放入顺序不一致)

要取值出来可以用增强for循环遍历取出。

常用方法:

     见Collection接口常用方法。

 

实现类:

     HashSet      使用HashMap实现,查询、增删效率都高,线程不安全,允许值为null。

     TreeSet  对内容自动进行排序,排序规则可以自行确定(继承Comparable接口,重写compareTo方法),使用TreeMap实现。

1.3 迭代器Interator

用来遍历容器中的值。

常用方法:

     hasNext()     判断是否有下一个元素。

     next()      返回游标所在元素,并把游标指向下一个位置。

     remove()    删除游标所在位置的元素,在next后该操作只能执行一次。

使用形式:

 Iterator  itr = Cllection的子类对象.iterator();
        while(itr.hasNext()){
            itr.next();
 }  

 

1.4 Collections工具类

它提供了一些操作Collection容器的简单方法:

      sort(List   list)                    排序,由小到大。

      shuffle(List   list)               打乱,随机排序。

      reverse(List   list)              逆序,头尾颠倒。

      fill(List  list  ,  Object   o)              用o重写整个list。

      int  binarySearch(List    list  , Object   o)    二分法在list中查找o,记得先给list排好序,不然会找不到!


 

2、Map接口

基于Key和Value的结构存储数据,Key不能重复,value可以重复。

常用方法:

        V   put(K  key , V  value)               添加一对key、value到集合中。

        void   putAll(Map    m)           把m中所有元素加入到集合中。

        V    remove(Object   key)         删除key对应的value。

        V    get(Object     key)            获取key对应的value。

        boolean   containKey(Object   key)     判断是否存在key。

        boolean   containValue(Object   value)    判断是否存在value。

        Set keySet()                获取所有的key,存放到Set集合中。

        Set<Map.Entry<K,V>>   entrySet()     返回一个Set,里面存放的是Map内的一个泛型接口Entry<K,V>,包含了集合的所有映射。

        void   clear()              删除Map中所有映射。

实现类:

      TreeMap 使用红黑树实现的,效率比HashMap低,但是它自动排序,排序规则(继承Comparable接口,重写compareTo方法)。

      HashMap   使用哈希表存储数据,如果新进来的值key重复,则会覆盖旧值。

遍历Map方式一:通过Key集合遍历。

Set<Integer>  set = map.keySet();
for(Integer i:set){
    //i为key
      System.out.println("key:"+i+"\nvalue:"+map.get(i));
}

遍历Map方式二:转为Set,再遍历。

        /**
         * entrySet返回一个Set集合,这个集合中存放的是Map.Entry<K,V>,
         * 看源码,易知Entry是Map的一个内部接口,它有三个方法:getKey()/getValue()/setValue()。
         */
       Set<Map.Entry<Integer,String>>  set=map.entrySet();
       for(Map.Entry<Integer,String> temp:set){
           //获得key和value
            temp.getKey()
            temp.getValue();
           //可以改变内部的值
           temp.setValue("love");
       }    

遍历Map方式三:转为Set,使用迭代器。

    //map把映射内容丢入一个Set<Map.Entry<K,V>>集合中,然后通过.iterator获得这个Set的迭代器
       Iterator<Map.Entry<Integer,String>>  it = map.entrySet().iterator();
       while(it.hasNext()){
           Map.Entry<Integer,String> temp =it.next();
           System.out.println(temp.getKey()+"->"+temp.getValue());
       }

解释一个难以理解的方法:

entrySet()方法

  它实现了HashMap对象转为Set对象,这样就可以使用迭代器Iterator进行遍历了。

  但是Set对象里面存放的比较特殊,是一对数据,Map.Entry<K,V>。

  这个数据有getKey,getValue,setValue三个方法。

 

标签:总结,容器,Set,Java,Map,Object,boolean,key,元素
From: https://www.cnblogs.com/lurenjia-bky/p/16950540.html

相关文章

  • 20个既简单又实用的JavaScript小技巧
    原文地址:https://docs.qq.com/doc/DWXBUdGFsZllVcUhZ 1.滚动到页面顶部我们可以使用window.scrollTo()平滑滚动到页面顶部。  const scrollToTop = () =......
  • 2022-2023-1 20221405 《计算机基础与程序设计》 第十四周学习总结
    作业信息这个作业属于哪个课程2022-2023-1-计算机基础与程序设计这个作业要求在哪里2022-2023-1计算机基础与程序设计第十四周作业这个作业的目标《C语言程......
  • 八、JSP(Java Server Pages)
    八、JSP(JavaServerPages)8.1、什么是jspJavaServerPages:Java服务器端页面,也和Servlet一样,用于动态Web技术最大的特点:写jsp就像写HTML区别:HTMl只能给用户提......
  • 九、JavaBean
    实体化JavaBean有特定的写法:必须要有一个无参构造属性必须私有化必须有对应的get/set方法:一般用来和数据库字段做映像......
  • 【JAVA】基于thymeleaf+bootstrap的页面嵌套
    网站中对于公共元素(如导航栏等)的使用,可以在页面使用th:insert标签嵌入对应的div等元素,以下展示一个简单的嵌套demo。即将导航栏、登入登出模态对话框作为公共元素引入,代码如......
  • 2022-2023 20221425《计算机基础与程序设计》第十四周总结
    学期(如2022-2023-1)学号(如:20221425)《计算机基础与程序设计》第十四周学习总结作业信息这个作业属于哪个课程<班级的链接>(如2022-2023-1-计算机基础与程序设计)......
  • 2022-2023-1 20221413《计算机基础与程序设计》第十四周学习总结
    2022-2023-120221413《计算机基础与程序设计》第十四周学习总结作业信息这个作业属于哪个课程2022-2023-1-计算机基础与程序设计这个作业要求在哪里2022-2023......
  • 前端之JavaScript(Js)基础
    JavaScript,简称JsHTML三把利剑之一,浏览器可解析Js,看着和Java像,实则和Java并无关系,和Python、Go、C++等都是一门独立的语言。一、Js基础引入JavaScript代码,类似于Python......
  • 2022-2023-1 20221321 《计算机基础与程序设计》第十四周总结
    班级:202213作业目标:自学课本,了解计算机和编程知识作业正文:https://www.cnblogs.com/20221321yang-yu/p/16950333.html教材学习内容总结学习了c语言结构体,并尝试了使......
  • 周总结w10
    本周内容回顾多表插叙的两种方法#方式1:连表操作 innerjoin内连接 leftjoin 左连接 rughtjoin 右连接 union 全连接#方式2:子查询 将一......