集合一

集合

java的所有集合类都位于 java.util 包,其中提供了一个表示和操作对象集合的统一构架,包含大量集合接口,以及这些接口的实现类和操作它们的算法。一个集合是一个对象,但它表示一组对象,Java 集合中实际存放的是对象的引用值,不能存放基本数据类型值。

在这里插入图片描述

Java 集合框架主要包括两种类型的容器,一种是集合(Collection),存储一个元素集合,另一种是图(Map),存储键/值对映射。Collection 接口又有 3 种子类型,List、Set 和 Queue,再下面是一些抽象类,最后是具体实现类,常用的有 ArrayList、LinkedList、HashSet、LinkedHashSet、HashMap、LinkedHashMap 等等。

Collection

Collection 是最基本的集合接口,一个 Collection 代表一组 Object,即 Collection 的元素, Java不提供直接继承自Collection的类,只提供继承于的子接口(如List和set)。

Collection 接口存储一组不唯一,无序的对象。

主要方法

  • boolean add(Object o) 添加对象到集合
  • boolean remove(Object o) 删除指定的对象
  • int size() 返回当前集合中元素的数量
  • boolean contains(Object o) 查找集合中是否有指定的对象
  • boolean isEmpty() 判断集合是否为空
  • Iterator iterator() 返回一个迭代器
  • boolean containsAll(Collection c) 查找集合中是否有集合c中的元素
  • boolean addAll(Collection c) 将集合c中所有的元素添加给该集合
  • void clear() 删除集合中所有元素
  • void removeAll(Collection c) 从集合中删除c集合中也有的元素
  • void retainAll(Collection c) 从集合中删除集合c中不包含的元素

代码案例

public static void main(String[] args){  
        //学习接口中的方法 接口指向实现类  
        Collection coll=new ArrayList();  
  
        //添加元素  
        coll.add("java");  
        coll.add(1);  
  
        //添加元素  
        Collection coll1=new ArrayList();  
        coll1.add("html");  
        coll1.add("spring");  
  
        System.out.println("往coll中添加coll1:"+coll.add(coll1));  
        System.out.println(coll);  
  
        //删除元素  
        //coll.clear();  
        System.out.println("移除不存在的元素:"+coll.remove("spring"));  
        //System.out.println("移除整个集合:"+coll1.removeAll(coll1));  
  
        System.out.println("coll中的元素:"+coll);  
        System.out.println(coll.retainAll(coll1));  
        System.out.println("coll中的元素:"+coll);  
  
  
        //查看元素  
        System.out.println("查看当前集合是否为空:"+coll.isEmpty());  
        System.out.println("查看当前集合元素个数:"+coll.size());  
        System.out.println("查看当前集合是否包含元素1:"+coll.contains(1));  
  
    }  
public static void main(String[] args) {  
        //创建集合对象  
        Collection coll = new ArrayList();  
        //添加元素  
        coll.add("String");  
        coll.add("1");  
        coll.add("Integer");  
        coll.add("Scanner");  
        //迭代元素  
        System.out.println("foreach循环迭代");  
        for(Object obj:coll) {  
            String str = (String)obj;  
            System.out.println(str);  
        }  
        System.out.println("iterator 迭代器");  
        Iterator it = coll.iterator();//实现类对象  
        while(it.hasNext()) {//下面是否存在元素  如果存在元素 返回true 如果不存在返回false  
            //获取元素  
            System.out.println(it.next());  
        }  
        System.out.println("迭代器的变种写法");  
        for(Iterator it1 = coll.iterator();it1.hasNext();) {  
            System.out.println(it1.next());  
        }  
    }  

ArrayList

概念

ArrayList底层是用数组实现的,可以认为ArrayList是一个可改变大小的数组。随着越来越多的元素被添加到ArrayList中,其规模是动态增加的。它继承了AbstractList,实现了List、RandomAccess, Cloneable, java.io.Serializable。 基本的ArrayList,长于随机访问元素,但是在List中间插入和移除元素时较慢。同时,ArrayList的操作不是线程安全的!一般在单线程中才使用ArrayList,而在多线程中一般使用Vector或者CopyOnWriteArrayList。

常用方法

  • public boolean add(E e) :将指定的元素添加到此集合的尾部。

  • public E remove(int index) :移除此集合中指定位置上的元素。返回被删除的元素。

  • public E get(int index) :返回此集合中指定位置上的元素。返回获取的元素。

  • public int size() :返回此集合中的元素数。遍历集合时,可以控制索引范围,防止越界。

  • contains(object obj):判断是否含有指定元素

  • public E set(int index, String element):把此集合中指定索引的元素,改为新的元素

public static void main(String[] args) {  
       //创建集合对象  
       ArrayList<String> list = new ArrayList<String>();  
  
       //添加元素  
       list.add("hello");  
       list.add("world");  
       list.add("java");  
  
       //public E get(int index):返回指定索引处的元素  
       System.out.println("get:"+list.get(0));  
       System.out.println("get:"+list.get(1));  
       System.out.println("get:"+list.get(2));  
  
       //public int size():返回集合中的元素的个数  
       System.out.println("size:"+list.size());  
  
       //public E remove(int index):删除指定索引处的元素,返回被删除的元素  
       System.out.println("remove:"+list.remove(0));  
  
       //遍历输出  
       for(int i = 0; i < list.size(); i++){  
           System.out.println(list.get(i));  
       }  
   }  

循环遍历

 public static void main(String[] args){  
        //创建对象  
        List ls=new ArrayList();  
  
        ls.add("小炮 崔丝塔娜");  
        ls.add("大嘴 克格莫");  
        ls.add("滑板鞋 卡利斯塔");  
        ls.add("老鼠 biubiubiu");  
  
        //查看当前是否存在大嘴 克格莫 如果存在则添加元素 ez 伊泽瑞尔  
        System.out.println("普通for循环");  
        for(int i=0;i<ls.size();i++){  
            if("大嘴 克格莫".equals(ls.get(i))){  
                ls.add("ez 伊泽瑞尔");  
            }  
        }  
        System.out.println(ls);  
  
//        System.out.println("foreach循环");  
//        for(Object object:ls){  
//            String str=(String)object;  
//            if("大嘴 克格莫".equals(str)){  
//                ls.add("ez 伊泽瑞尔");  
//            }  
//            System.out.println(object);  
//        }  
        System.out.println("======ListIterator");{  
            ListIterator iterator=ls.listIterator();  
            while (iterator.hasNext()){  
                if("大嘴 克格莫".equals(iterator.next())) {  
                    iterator.add("ez 伊泽瑞尔");  
                }  
            }  
            System.out.println(ls);  
        }  
    }  

LinkedList

LinkedList底层是通过双向链表实现的。所以,LinkedList和ArrayList之前的区别主要就是数组和链表的区别。

LinkedList和ArrayList相比,增删的速度较快。但是查询和修改值的速度较慢。同时,LinkedList还实现了Queue接口,所以他还提供了offer(), peek(), poll()等方法。

常用方法

增加
  • add(E e):在链表后添加一个元素; 通用方法

  • addFirst(E e):在链表头部插入一个元素; 特有方法

  • addLast(E e):在链表尾部添加一个元素; 特有方法

  • push(E e):与addFirst方法一致

  • offer(E e):在链表尾部插入一个元素

  • add(int index, E element):在指定位置插入一个元素。

  • offerFirst(E e):JDK1.6版本之后,在头部添加;特有方法

  • offerLast(E e):JDK1.6版本之后,在尾部添加; 特有方法

删除
  • remove() :移除链表中第一个元素; 通用方法

  • remove(E e):移除指定元素; 通用方法

  • removeFirst(E e):删除头,获取元素并删除; 特有方法

  • removeLast(E e):删除尾; 特有方法

  • pollFirst():删除头; 特有方法

  • pollLast():删除尾; 特有方法

  • pop():和removeFirst方法一致,删除头。

  • poll():查询并移除第一个元素 特有方法

查询
  • get(int index):按照下标获取元素; 通用方法

  • getFirst():获取第一个元素; 特有方法

  • getLast():获取最后一个元素; 特有方法

  • peek():获取第一个元素,但是不移除; 特有方法

  • peekFirst():获取第一个元素,但是不移除;

  • peekLast():获取最后一个元素,但是不移除;

  • pollFirst():查询并删除头; 特有方法

  • pollLast():删除尾; 特有方法

  • poll():查询并移除第一个元素 特有方法

public static void main(String[] args) {  
       //1.创建对象  
       LinkedList<String> ls = new LinkedList<>();  
  
       //2.添加元素  
       ls.add("不知火舞");  
  
       System.out.println(ls.get(0));  
       System.out.println(ls);  
  
       ls.add("橘右京");  
       ls.add("娜可露露");  
       ls.add("宫本武藏");  
  
       //多了些针对于头尾元素的操作  
       ls.addFirst("草薙京");  
       ls.addLast("八神庵");  
       System.out.println(ls.offer("春丽"));//添加到末尾  
       System.out.println(ls.offerFirst("chunli"));  
       System.out.println(ls.offerLast("春来"));  
         
       System.out.println(ls);  
       System.out.println(ls.element());//获取头元素  
       System.out.println(ls.getFirst());  
       System.out.println(ls.getLast());  
         
       System.out.println(ls);  
         
       //ls=null;  
       System.out.println(ls.peekFirst());  
       System.out.println(ls.peek());  
         
   }    
   System.out.println(ls.getFirst());  
   System.out.println(ls.getLast());  
     
   System.out.println(ls);  
     
   //ls=null;  
   System.out.println(ls.peekFirst());  
   System.out.println(ls.peek());  

}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值