首页 > 其他 > 详细

Collection集合概述

时间:2021-03-08 14:22:09      阅读:26      评论:0      收藏:0      [点我收藏+]

List集合:

    特点:元素有序(这里的有序指的是存取有序) 有索引  元素可重复

    ArrayList: 底层是数组 增删慢 查询快(因为有索引)

    LinkedList:底层是链表 增删快 查询慢

Set集合:

    特点:元素无序 无索引 不可重复

    HashSet: 底层是哈希表  元素唯一的依据是  hashCode()+equals() HashSet集合存储自定义类型元素,要想实现元素的唯一,要求必须重写hashCode方法和equals方法

  • 哈希值简介

    是JDK根据对象的地址或者字符串或者数字算出来的int类型的数值

  • 如何获取哈希值

    Object类中的public int hashCode():返回对象的哈希码值

  • 哈希值的特点

    • 同一个对象多次调用hashCode()方法返回的哈希值是相同的

    • 默认情况下,不同对象的哈希值是不同的。而重写hashCode()方法,可以实现让不同对象的哈希值相同

    TreeSet:  可以将元素按照规则进行排序 ,重写方法时,一定要注意排序规则必须按照要求的主要条件和次要条件来写

 

      TreeSet():根据其元素的自然排序进行排序,自定义的类实现Comparable接口重写compareTo(T o)方法

 

 

      TreeSet(Comparator comparator) :根据指定的比较器进行排序 重写compare(T o1,T o2)方法

    两种方式中关于返回值的规则 (元素唯一性的依据)

    •   如果返回值为负数,表示当前存入的元素是较小值,存左边

    •   如果返回值为0,表示当前存入的元素跟集合中元素重复了,不存

    •   如果返回值为正数,表示当前存入的元素是较大值,存右边

Collection集合的遍历【应用】

  • 迭代器介绍

    • 迭代器,集合的专用遍历方式

    • Iterator<E> iterator(): 返回此集合中元素的迭代器,通过集合对象的iterator()方法得到

  • Iterator中的常用方法

    boolean hasNext(): 判断当前位置是否有元素可以被取出 ? E next(): 获取当前位置的元素,将迭代器对象移向下一个索引位置

  • Collection集合的遍历
  • 技术分享图片
    public class IteratorDemo1 {
        public static void main(String[] args) {
            //创建集合对象
            Collection<String> c = new ArrayList<>();
    
            //添加元素
            c.add("hello");
            c.add("world");
            c.add("java");
            c.add("javaee");
    
            //Iterator<E> iterator():返回此集合中元素的迭代器,通过集合的iterator()方法得到
            Iterator<String> it = c.iterator();
    
            //用while循环改进元素的判断和获取
            while (it.hasNext()) {
                String s = it.next();
                System.out.println(s);
            }
        }
    }
    View Code

    迭代器中删除的方法

    void remove(): 删除迭代器对象当前指向的元素

技术分享图片
public class IteratorDemo2 {
    public static void main(String[] args) {
        ArrayList<String> list = new ArrayList<>();
        list.add("a");
        list.add("b");
        list.add("b");
        list.add("c");
        list.add("d");

        Iterator<String> it = list.iterator();
        while(it.hasNext()){
            String s = it.next();
            if("b".equals(s)){
                //指向谁,那么此时就删除谁.
                it.remove();
            }
        }
        System.out.println(list);
    }
}
View Code

增强for循环【应用】

  • 介绍

    • 它是JDK5之后出现的,其内部原理是一个Iterator迭代器

    • 实现Iterable接口的类才可以使用迭代器和增强for

    • 简化数组和Collection集合的遍历

  • 格式

    for(集合/数组中元素的数据类型 变量名 : 集合/数组名) {

    // 已经将当前遍历到的元素封装到变量中了,直接使用变量即可

    }

  • 代码

  • 技术分享图片
    public class MyCollectonDemo1 {
        public static void main(String[] args) {
            ArrayList<String> list =  new ArrayList<>();
            list.add("a");
            list.add("b");
            list.add("c");
            list.add("d");
            list.add("e");
            list.add("f");
    
            //1,数据类型一定是集合或者数组中元素的类型
            //2,str仅仅是一个变量名而已,在循环的过程中,依次表示集合或者数组中的每一个元素
            //3,list就是要遍历的集合或者数组
            for(String str : list){
                System.out.println(str);
            }
        }
    }
    View Code

     

 

 

 

Collection集合概述

原文:https://www.cnblogs.com/izzo/p/14498643.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!