在Java中Collection的一些常用方法总结

Java中Collection的常用方法

1、add() 向中添加元素

add(100) 自动装箱操作,实际上是放进去的一个对象, Integer n = new Integer(100),实际上是把n放进了

Collection co = new ArrayList();
co.add(1);

2、addAll( Collection c )

将指定集合中的所有元素添加到从集合中
因为ArryList类中重写了equals() 方法,所以两个集合比较相等。

public class lxc {
    public static void main(String[] args) {
        Collection c = new ArrayList();
        for(int i = 0; i < 5; i ++) {
            c.add(i);
        }
        Collection c1 = new ArrayList();
        c1.addAll(c);
        System.out.println(c1.equals(c)); // true
    }
}

3、size() 获取集合中元素个数

Collection co = new ArrayList();
int n = co.size();

4、clear() 清空集合

Collection co = new ArrayList();
co.clear();

5、contains(100) 判断当前集合中是否包含100这个元素 返回 true、false

Collection co = new ArrayList();
co.add(100);
co.add(200);
boolean r = co.contains(100); // true

*** 深入探究***

例一:

下边代码,new了两个字符串,s1被添加到集合中去了,但是s2没有添加进去,最后输入s2是否在集合当中?
分析:
按道理来说,s1和s2在栈内存中是两个变量分别指向了在堆内存中存储的也是两个对象,只不过这两个对象同时指向了 "123" 在常量池中的地址而已,怎么地集合中都不能包含s2啊?
下边我们来看下contains源码:

public class lxc {
    public static void main(String[] args) {
        Collection r = new ArrayList();
        String s1 = new String("123");
        r.add(s1);
        String s2 = new String("123");
        System.out.println(r.contains(s2)); // true
    }
}

contains()源码:

参数o是调用contains()方法传递的参数,内部调用了indexOf(),而indexof方法内部调用了indexOfRange方法,在这个方法中会去获取集合中的每一个元素,然后通过equals() 方法来判断传递的参数与集合中的元素是否相等,我们传的参数是字符串,而字符串的equals()方法在源码中已经被重写了,只要字符串值相等就想等,实际判断的是:s1.equals(s2), 结果相等,返回元素在集合中的索引,而索引一定 >= 0,所以返回true!
其实调用contains() 方法,内部是调用equals()方法来判断的!!!!!!!!!!!!!!!!

例二:

下边知道为什么返回false了吧,Person类的eqauls() 方法继承的是object对象上的,所以没有重写equals() 方法的两个对象比较自然返回false了。

public class lxc {
    public static void main(String[] args) {
        Collection r = new ArrayList();
        Person p1 = new Person("lxc", 20);
        r.add(p1);
        Person p2 = new Person("lxc", 20);
        System.out.println(r.contains(p2));  // false
    }
}
class Person{
    String name;
    int age;
    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }
}

我们来重写下Person对象的eqauls() 方法:

public class lxc {
    public static void main(String[] args) {
        Collection r = new ArrayList();
        Person p1 = new Person("lxc", 20);
        r.add(p1);
        Person p2 = new Person("lxc", 20);
        System.out.println(r.contains(p2));  // true
    }
}
class Person{
    String name;
    int age;
    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }
    @Override
    public boolean equals(Object obj) {
        if(!(obj instanceof Person)) return false;
        if(this == obj) return true;
        Person o = (Person) obj;
        if((this.name == o.name) && (this.age == o.age)) {
            return true;
        }
        return false;
    }

6、remove() 删除集合中某个元素

Collection co = new ArrayList();
co.remove(100);

****深入探究****

其实remove() 方法和contains() 方法类似,内部也是调用了equals() 方法,所以s1和s2相等,删除了s2等同于删除了s1。

public class lxc {
    public static void main(String[] args) {
        Collection r = new ArrayList();
        String s1 = new String("abc");
        r.add(s1);
        String s2 = new String("abc");
        Boolean res = r.remove(s2);
        System.out.println(res); // 删除成功了
        System.out.println(r.size()); // 0
    }
}

remove源码:
获取集合中的每一个元素,使用equals() 方法判断是否相等,如果相等调用fastRemove方法删除元素。

7、isEmpty() 判断集合是否为空 true、false

co.isEmpty();

8、Object r = col.toArray() 把集合转数组

9、iterator 迭代器对象 (重点)

xxx.iterator( ); 获取迭代器。
Collection h = new HashSet();
Iterator r = h.iterator() 获取iterator对象,目的遍历数组  r迭代器对象 - 负责迭代集合当中的元素。

r迭代器对象中的方法:
(1)boolean hasNext()如果仍有元素可迭代,则返回true;
(2)Object next() 返回迭代的下一个元素。
(3)void remove() 没返回,删除集合中的元素

public class lxc {
    public static void main(String[] args) {
        Collection h = new HashSet();
        h.add(1);
        h.add(2);
        h.add(new Object());
        // 获取迭代器
        Iterator r = h.iterator();
        while(r.hasNext()) {
            Object res = r.next();
            System.out.println(res);
        }
    }
}
public class lxc {
    public static void main(String[] args) {
        Collection c = new ArrayList();
        Iterator i = c.iterator();
        c.add(1);
        c.add(2);
        Iterator i1 = c.iterator();
        while(i1.hasNext()) {
            Object r = i1.next();
            i1.remove();
            System.out.println(r);
        }
        System.out.println(c.size()); // 0
    }
}

****重点****

当集合的结构发生改变的时候,迭代器必须重新获取,如果还是以前老的迭代器,会出现异常。
下边集合的结构发生了改变,结果报错:

// 报错:java.base/java.util.ArrayList$Itr.checkForComodification
public class lxc {
    public static void main(String[] args) {
        Collection c = new ArrayList();
        Iterator i = c.iterator();
        c.add(1);
        c.add(2);
        while(i.hasNext()) {
            Object r = i.next();
            System.out.println(r);
        }
    }
}

修改:

public class lxc {
    public static void main(String[] args) {
        Collection c = new ArrayList();
        Iterator i = c.iterator();
        c.add(1);
        c.add(2);
        Iterator i1 = c.iterator();
        while(i1.hasNext()) {
            Object r = i1.next();
            System.out.println(r);
        }
    }
}

到此这篇关于在Java中Collection的一些常用方法总结的文章就介绍到这了,更多相关Java Collection常用方法内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Java Collections.sort()实现List排序的默认方法和自定义方法

    1.java提供的默认list排序方法 主要代码: List<String> list = new ArrayList();list.add("刘媛媛"); list.add("王硕"); list.add("李明"); list.add("刘迪"); list.add("刘布"); //升序 Collections.sort(list,Collator.getInstance(java.uti

  • JAVA中Collections工具类sort()排序方法

    本问介绍了Collections工具类两种sort()方法,具体如下: 一.Collections工具类两种sort()方法 格式一: public static <T extends Comparable<? super T>> void sort(List<T> list) 说明:该方法中的泛型<T>都是Comparable接口的子类,即只有是Comparable接口子类类型的数据,才能进行比较排序.如果其他类型的数据要进行比较排序,必须继承Compar

  • JAVA集合框架工具类自定义Collections集合方法

    项目中有需要多次统计 某些集合中 的某个属性值,所以考虑封装一个方法,让其其定义实现计算方式. 话不多说,看代码: 1.封装的自定义集合工具类:CollectionsCustom package com.test.util; import java.util.Collection; import org.apache.commons.collections.CollectionUtils; /** * 自定义集合处理类 */ public class CollectionsCustom { /*

  • Java Collection集合iterator方法解析

    这篇文章主要介绍了Java Collection集合iterator方法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 Iterator接口概述 /** * java.util.Iterator接口:选代器(对集合进行遍历) * 有两个常用的方法 * boolean hasNext() * 如果仍有元素可以迭代,则返回true. * 即判断集合中还有没有下ー个元素,有就返回true,没有就返回 false * E next() * 返回送代

  • Java Collection 移除元素方法及注意事项

    1. 前言 操作集合是一个 Java 编程人员几乎每天都在重复的事情.今天我们来研究一下从 Java Collection 中删除元素的方法.我构建了一个简单的集合,我们以此为例子来展开探索. List<String> servers = new ArrayList<>(); servers.add("Felordcn"); servers.add("Tomcat"); servers.add("Jetty"); serv

  • 详解java8在Collection中新增加的方法removeIf

    记得我在以前找工作的经历中,遇到过一个面试官问过我一个很基础的问题.问题是:有一个List中有10个元素,我现在想从中删除3个元素,请问怎么做?我当时也没想,就直接说,List的有自带的remove方法,可以直接使用,他说请详细的说明一下,我说写一个for循环,循环的次数是List的长度,然后在循环里面直接删除掉想要删除的元素就可以了. 当时还想,这么简单的问题也问,面试官说,你回去自己试试就知道了,你看按照你说的那样写会不会报错.然后我就懵了,虽然这是个简单的问题但是日常的编码中,我还真没有注

  • 用Java集合中的Collections.sort方法如何对list排序(两种方法)

    第一种是list中的对象实现Comparable接口,如下: /** * 根据order对User排序 */ public class User implements Comparable <user> { private String name; private Integer order; public String getName() { return name; } public void setName(String name) { this.name = name; } publi

  • 在Java中Collection的一些常用方法总结

    Java中Collection的常用方法 1.add() 向中添加元素 add(100) 自动装箱操作,实际上是放进去的一个对象, Integer n = new Integer(100),实际上是把n放进了 Collection co = new ArrayList(); co.add(1); 2.addAll( Collection c ) 将指定集合中的所有元素添加到从集合中 因为ArryList类中重写了equals() 方法,所以两个集合比较相等. public class lxc {

  • Java中Collection集合的常用方法详解

    目录 1.boolean add(E e) 2.boolean addAll(Collection<? extends E> c) 3.void clear() 4.boolean contains(Object o) 5.boolean containsAll(Collection<?> c) 6.boolean equals(Object o) 7.int hashCode() 8.boolean isEmpty() 9.Iterator<E> iterator()

  • 详解Java中Collection集合的常用方法

    目录 1.boolean add(E e) 2.boolean addAll(Collection<? extends E> c) 3.void clear() 4.boolean contains(Object o) 5.boolean containsAll(Collection<?> c) 6.boolean equals(Object o) 7.int hashCode() 8.boolean isEmpty() 9.Iterator<E> iterator()

  • 浅谈Java中Collection和Collections的区别

    1.java.util.Collection 是一个集合接口.它提供了对集合对象进行基本操作的通用接口方法.Collection接口在Java 类库中有很多具体的实现.Collection接口的意义是为各种具体的集合提供了最大化的统一操作方式. Collection ├List │├LinkedList │├ArrayList │└Vector │ └Stack └Set 2.java.util.Collections 是一个包装类.它包含有各种有关集合操作的静态多态方法.此类不能实例化,就像一

  • java中optional的一些常用方法总结

    目录 前言 1. 创建Optional对象 2. 获取Optional对象的值 3. 判断Optional对象是否包含非空值 4. 获取Optional对象中的值或默认值 5. 获取Optional对象中的值或抛出异常 6. 转换Optional对象中的值 7. 过滤Optional对象中的值 Java 9 增强 补充:Optional争议点 总结 前言 Java中的Optional是一个容器对象,它可以包含一个非空值,也可以为空.它的主要作用是在编写代码时避免空指针异常. java 8 中Op

  • Java中String类的常用方法总结

    目录 概述 特点 使用步骤 常用方法 判断功能的方法 获取功能的方法 转换功能的方法 分割功能的方法 概述 java.lang.String 类代表字符串.Java程序中所有的字符串文字(例如"abc" )都可以被看作是实现此类的实例. 类 String 中包括用于检查各个字符串的方法,比如用于比较字符串,搜索字符串,提取子字符串以及创建具有翻 译为大写或小写的所有字符的字符串的副本. 特点 字符串不变:字符串的值在创建后不能被更改. String s1 = "abc&quo

  • Java中父类Object的常用方法总结

    简介 Object类: 这个类java.lang.java是所有类默认继承的父类 Object类中常用的三个方法:toString() , equal() , hashCode() 一.toString()方法 对象的自我描述,对象的自我介绍 在对象的自我描述过程中,由于使用get()方法打印实例变量比较麻烦,为了简便,使用toString() . Public String toString(){ Return "学好" + getNo() + "姓名" + ge

  • Java中ArrayList集合的常用方法大全

    ArrayList集合的创建 非泛型 创建ArrayList集合对象,可以添加任意Object子类元素至集合 //非泛型创建的ArrayList集合对象可以保存任何类型的值 ArrayList list = new ArrayList(); list.add("str");//存入String类型数据 list.add(23);//存入int类型数据 list.add(2.5);//存入double类型数据 list.add('c');//存入char类型数据 泛型 采用泛型创建Arr

  • Java中的ArrayList类常用方法和遍历

    目录 ArrayList类常用方法和遍历 常用的方法有 ArrayList类方法总结 关于ArrayList 常用方法总结 构建ArrayList 添加元素 删除元素 查找元素 获取元素 获取ArrayList数组长度 检查是否为空 遍历ArrayList ArrayList类常用方法和遍历 ArrayList类对于元素的操作,基本体现在——增.删.查. 常用的方法有 public boolean add(E e):将指定的元素添加到此集合的尾部. public E remove(int ind

  • java 中Collection存储器详解及简单实例

    本篇仅为了巩固一下基础,回忆一下存储的这两个常用的东东- 一.Collection 1.存储对象可以考虑:①数组②结合 2.数组存储对象的特点:Student[] stu = new Student[20]; stu[0] = new Stutdent();-- 弊端:①一旦创建,其长度不可变 ②真实的数组存放的对象的个数是不可知的 3.集合 Collection接口     丨------List接口:存储有序,可以重复的元素         丨-------ArrayList(主要的实现类,

随机推荐