• Java集合


    1、Java 集合可分为 Collection 和 Map 两种体系

      Collection接口:单列数据,定义了存取一组对象的方法的集合
        List:元素有序、可重复的集合
        Set:元素无序、不可重复的集合
      Map接口:双列数据,保存具有映射关系“key-value对”的集合

    Collection 接口方法

    1、添加  
        add(Object obj)  
        addAll(Collection coll) 
    2、获取有效元素的个数 
        int size()
    3、清空集合  
        void clear() 
    4、是否是空集合  
        boolean isEmpty() 
    5、是否包含某个元素  
        boolean contains(Object obj):是通过元素的equals方法来判断是否 是同一个对象 ;
        boolean containsAll(Collection c):也是调用元素的equals方法来比 较的。拿两个集合的元素挨个比较。
    6、删除  
        boolean remove(Object obj) :通过元素的equals方法判断是否是 要删除的那个元素。只会删除找到的第一个元素  
        boolean removeAll(Collection coll):取当前集合的差集 
    7、取两个集合的交集  
        boolean retainAll(Collection c):把交集的结果存在当前集合中,不 影响c 
    8、集合是否相等  
        boolean equals(Object obj) 
    9、转成对象数组  
        Object[] toArray() 
    10、获取集合对象的哈希值  
        hashCode() 
    11、遍历  
        iterator():返回迭代器对象,用于集合遍历

    拓展:数组 --->集合:调用Arrays类的静态方法asList(T ... t)   List<String> list = Arrays.asList(new String[]{"AA", "BB", "CC"});


    使用Collection集合存储对象,要求对象所属的类满足:

    向Collection接口的实现类的对象中添加数据obj时,要求obj所在类要重写equals().

    Object中的equals()方法默认是按地址比较,而不按内容进行比较,

    public boolean equals(Object obj) {
           return (this == obj);
    }

    在String中覆写了Object中的equals方法,以用于判断字符串是否相同,

    public boolean equals(Object anObject) {
         if (this == anObject) {
             return true;
         }
         if (anObject instanceof String) {
             String anotherString = (String) anObject;
             int n = value.length;
             if (n == anotherString.value.length) {
                 char v1[] = value;
                 char v2[] = anotherString.value;
                 int i = 0;
                 while (n-- != 0) {
                     if (v1[i] != v2[i])
                             return false;
                     i++;
                 }
                 return true;
             }
         }
         return false;
     }

    Object中equals方法可以被子类重写,然后多态调用,当我们要自定义对象比较时一般要覆写equals方法,比如有Person对象,同姓名同年龄,视为同一个对象,

    public boolean equals(Object obj)
    {
        if(!(obj instanceof Person))
            return false;
        Person p = (Person)obj;
        return this.name.equals(p.name) && this.age == p.age;
    }    

    使用 Iterator 接口遍历集合元素

      Collection接口继承了java.lang.Iterable接口,该接口有一个iterator()方法,那么所 有实现了Collection接口的集合类都有一个iterator()方法,用以返回一个实现了 Iterator接口的对象。

      Iterator 仅用于遍历集合,Iterator 本身并不提供承装对象的能力。如果需要创建 Iterator 对象,则必须有一个被迭代的集合。

      集合对象每次调用iterator()方法都得到一个全新的迭代器对象,默认游标都在集合 的第一个元素之前。

    Iterator iterator = coll.iterator();
    //
    hasNext():判断是否还有下一个元素 while(iterator.hasNext()){ //next():①指针下移②将下移以后集合位置上的元素返回
    System.out.println(iterator.next());
    }

    foreach 循环迭代访问 Collection和数组

      遍历操作不需获取Collection或数组的长度,无需使用索引访问元素。

      遍历集合的底层调用Iterator完成操作,foreach还可以用来遍历数组。

  • 相关阅读:
    第十讲 PKI/CA
    4 Hermite二次型
    5 范数及矩阵函数
    3 矩阵的相似标准形
    iOSframework制作 [xcode13]
    iOS私有库[组件化] something about order
    Jenkins 内置变量
    CentOS安装并配置vsftpd服务
    ViewModelProviders报错
    Python 常用内置数据结构和算法
  • 原文地址:https://www.cnblogs.com/lemonzhang/p/12826409.html
Copyright © 2020-2023  润新知