Collection中常用api


Collection中常用api


package com.atguigu.java;

/**
 * @author liangqichen
 * @create 2021-09-15 23:01
 */
public class Person {
    private String name;
    private int age;

    public Person() {
    }

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    @Override
    public String toString() {
        return "Person{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }

    @Override
    public boolean equals(Object o) {
        System.out.println("Person equals......");
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;

        Person person = (Person) o;

        if (age != person.age) return false;
        return name != null ? name.equals(person.name) : person.name == null;
    }

//    @Override
//    public int hashCode() {
//        int result = name != null ? name.hashCode() : 0;
//        result = 31 * result + age;
//        return result;
//    }
}

package com.atguigu.java;

import org.junit.Test;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.List;

/**
 * Collection 接口中声明的方法的测试
 * <p>
 * 结论
 * 向 Collection接口的实现类的对象中添加数据obj时,要求obj所在类要重写equals().
 *
 * @author liangqichen
 * @create 2021-09-15 22:58
 */
public class CollectionTest {
    @Test
    public void test1() {
        Collection coll = new ArrayList();
        coll.add(123);
        coll.add(456);
        //       Person p = new Person("Jerry" , 20);
        //       coll.add(p);
        coll.add(new Person("Jerry", 20));
        coll.add(new String("Tom"));
        coll.add(false);


        // 1 . contains(Object obj); 判断当前集合中是否包含obj
        // 我们在判断时会调用obj对象所在类的equals()。
        boolean contains = coll.contains(123);
        System.out.println(contains);  // true

        System.out.println(coll.contains(new String("Tom")));  // true

        // ,System.out.println(coll.contains(p));  // true

        System.out.println(coll.contains(new Person("Jerry", 20)));  // true

        // 2. containsAll(Collection coll1) : 判断形参coll1中的所有元素是否都存在于当前集合中。
        Collection coll1 = Arrays.asList(123, 4567);
        System.out.println(coll.containsAll(coll1));  // false
    }

    @Test
    public void test2() {
        // 3  remove(Object obj) : 从当前集合中,移除obj元素
        Collection coll = new ArrayList();
        coll.add(123);
        coll.add(456);
        coll.add(new Person("Jerry", 20));
        coll.add(new String("Tom"));
        coll.add(false);

        // coll.remove(123);
        System.out.println(coll);  // [456, Person{name='Jerry', age=20}, Tom, false]
        coll.remove(new Person("Jerry", 20));
        System.out.println(coll);  // [456, Tom, false]

        // 4. removeAll(Collection coll1) : 差集 :从当前集合中移除coll1中所有的元素
        Collection coll1 = Arrays.asList(123, 456);
        coll.removeAll(coll1);
        System.out.println(coll);  // [Tom, false]
    }

    @Test
    public void test3() {
        Collection coll = new ArrayList();
        coll.add(123);
        coll.add(456);
        coll.add(new Person("Jerry", 20));
        coll.add(new String("Tom"));
        coll.add(false);

        // 5. retainAll(Collection coll1) : 交集,获取当前集合和coll1集合的交集。并返回给当前集合。
//        Collection coll1 = Arrays.asList(123,456,789);
//        coll.retainAll(coll1);
//        System.out.println(coll);   // [123, 456]

        // 6. equals(Object obj)  :  要想返回true,需要当前集合和形参集合的元素都相同
        Collection coll1 = new ArrayList();
        coll1.add(123);
        coll1.add(456);
        coll1.add(new Person("Jerry", 20));
        coll1.add(new String("Tom"));
        coll1.add(false);

        System.out.println(coll.equals(coll1)); // true
    }

    @Test
    public void test4() {
        Collection coll = new ArrayList();
        coll.add(123);
        coll.add(456);
        coll.add(new Person("Jerry", 20));
        coll.add(new String("Tom"));
        coll.add(false);

        // 7. hashCode() : 返回当前对象的哈希值
        System.out.print(coll.hashCode());  // -1601397616

        // 8. 集合 ---> 数组 :  toArray() 集合到数组的转换
        Object[] arr = coll.toArray();
        for (int i = 0; i < arr.length; i++) {
            System.out.println(arr[i] + "\t");  // 123	456	Person{name='Jerry', age=20}	Tom	false
        }

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

        List arr1 = Arrays.asList(new int[]{123, 456});
        System.out.println(arr1.size());  // 1

        List arr2 = Arrays.asList(new Integer[]{123, 456});
        System.out.println(arr2.size());  // 2

        //  iterator(): 返回Iterator接口的实例,用于遍历集合元素。放在IteratorTest.java中测试
    }
}

上一篇:超级玛丽(Java实现)


下一篇:Iterator(迭代器)遍历Collection集合