首页 > 编程语言 > 详细

Java集合

时间:2020-05-04 14:52:02      阅读:54      评论:0      收藏:0      [点我收藏+]

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还可以用来遍历数组。技术分享图片

 

Java集合

原文:https://www.cnblogs.com/lemonzhang/p/12826409.html

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