ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

集合相关操作

2021-10-02 23:03:22  阅读:146  来源: 互联网

标签:add 相关 Person coll 123 println new 集合 操作


package com.wanjin.jihe;

import org.junit.Test;

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

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

         //Contains(Object obj):判断当前集合中是否包含obj
        //我们在判断时会调用obj对象所在类的equals()
        boolean contains = coll.contains(123);//true
        System.out.println(contains);//true
//        System.out.println(coll.contains(p)); //true
        System.out.println(coll.contains(new String("Tom")));//true
        System.out.println(coll.contains(new Person("Jerry",20)));//false-->true
        System.out.println("===============================================");
        //在Person类中Alt+INS equals() and hashcode()


//2.containsAll(containsAll coll1):判断形参coll1中的所有元素是否都存在于当前集合中
     Collection coll1= Arrays.asList(123,456);  //  Arrays.asList方法是将数组转化成List集合的方法。
        System.out.println(coll.containsAll(coll1));
    }



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

        coll.remove(123); //删除掉123
        System.out.println(coll);

        coll.remove(new Person("Jerry",20));
        System.out.println(coll);

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


    @Test
    public void test3() {

        Collection coll = new ArrayList();
        coll.add(123);
        coll.add(456);
        coll.add(new String("Tom"));
        coll.add(false);
        coll.add(new Person("Jerry", 20));

        //5.retainAll(Collection coll1):交集:获取当前集合和coll1集合的交集,并返回给当前集合(保留一样的,删掉不一样的)
//        Collection coll1=Arrays.asList(123,456,789);
//        coll.retainAll(coll1);
//        System.out.println(coll);
//


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

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

    @Test
    public void test4() {

        Collection coll = new ArrayList();
        coll.add(123);
        coll.add(456);
        coll.add(new String("Tom"));
        coll.add(false);
        coll.add(new Person("Jerry", 20));

        //7.hashCode():返回当前对象的哈希值
        System.out.println(coll.hashCode());
        
        //8.集合----->数组:toArray()
        Object[] arr = coll.toArray();
        for(int i=0;i<arr.length;i++){
            System.out.println(arr[i]);
        }
        //扩展:数组--->集合:调用Arrays类的静态方法asList()
        List<String> list = Arrays.asList(new String[]{"AA", "BB", "CC"});
        System.out.println(list);

       // List<int[]> arr1 = Arrays.asList(new int[]{123, 456});//这样写的话new int[]{123, 456}会被当成是一个元素
        List arr1 = Arrays.asList(123, 456);
        System.out.println(arr1);

        List arr2 = Arrays.asList(new Integer[]{123,456});//可以写成这样
        System.out.println(arr2);

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

    }

}

 

 

package com.wanjin.jihe;

import org.junit.Test;

import java.util.ArrayList;
import java.util.Collection;


/**
 * 集合元素的遍历操作,使用迭代器Iterator接口
 *内部的方法:hasnext()和next()搭配使用
 *
 * @author shkstart
 * create 2021.10.2
 *
* */
public class Iterator {
    @Test
    public void test1(){
        Collection coll = new ArrayList();
        coll.add(123);
        coll.add(456);
        coll.add(new String("Tom"));
        coll.add(false);
        coll.add(new Person("Jerry", 20));

        java.util.Iterator iterator = coll.iterator();

        while (iterator.hasNext()){

            System.out.println(iterator.next()); //迭代器,输出coll集合中所有元素

        }
    }

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

        //错误方式:集合对象每次调用iterator()方法都会得到一个全新的迭代器对象,默认游标都在集合的第一个,所以此方法会陷入一直输出123的死循环
        while(coll.iterator().hasNext()){
            System.out.println(coll.iterator().next());
        }
    }
    @Test
    public void test3() {
        Collection coll = new ArrayList();
        coll.add(123);
        coll.add(456);
        coll.add(new String("Tom"));
        coll.add(false);
        coll.add(new Person("Jerry", 20));

        //删除集合中"Tom"
        java.util.Iterator iterator = coll.iterator();
        while(iterator.hasNext()){
            Object obj =iterator.next();
            if("Tom".equals(obj)){
                iterator.remove(); //内部定义了一个remove方法,可以在遍历的时候,删除集合中的元素,此方法不同于集合直接调用remove
            }
        }
        iterator=coll.iterator();
        while (iterator.hasNext()){
            System.out.println(iterator.next());
        }
    }
    }


 

package com.wanjin.jihe;

import java.util.Objects;

/**
 * Collection接口中声明的方法的测试
 *
 * @author shkstart
 * @create 2021.10.1
 * */
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;
        return age == person.age &&
                Objects.equals(name, person.name);
    }

//    @Override
//    public int hashCode() {
//        return Objects.hash(name, age);
//    }
}
 

 

标签:add,相关,Person,coll,123,println,new,集合,操作
来源: https://blog.csdn.net/weixin_45746783/article/details/120590263

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有