栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

集合的认识

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

集合的认识

集合: Collection(接口):

单列集合,他有两个重要的接口,List接口和Set接口

List :有索引、存取有序、可重复。Set :无索引、存取无序(linkedHashSet除外)、不重复。


Collection方法:

其中比较特殊的方法: 1、contains(Object o)

contains(Object o) :
如果此列表包含指定的元素,则返回 true 。
注意:当需要判断自定义对象是否包含于集合中时,需要在自定义方法中重写equals()方法,contains()方法本质是调用equals()方法进行判断

举例说明:

自定义一个类,并且重写equals方法,在里面添加一句 equals方法已被调用。。。

import java.util.Objects;

public class T {
    private int age;
    private String name;
    public T(int age,String name){
        this.age=age;
        this.name=name;
    }

    public int getAge() {
        return age;
    }

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

    public String getName() {
        return name;
    }

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

    @Override
    public boolean equals(Object o) {
        System.out.println("equals方法已被调用。。。");
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        T t = (T) o;
        return age == t.age && Objects.equals(name, t.name);
    }

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

定义一个测试类:

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


public class Test1 {
    public static void main(String[] args) {
        Collection c1=new ArrayList();
        c1.add(123);
        c1.add(321);
        c1.add(new String ("引用类型"));
        c1.add(new T(19,"净澄"));

        System.out.println(c1.contains(new T(19, "净澄")));
    }
}

结果:

equals方法已被调用。。。
equals方法已被调用。。。
equals方法已被调用。。。
equals方法已被调用。。。
true

Process finished with exit code 0

分析结果:
为什么判断new T(19, "净澄")是否包含于c1集合时,equals方法已被调用。。。会被执行四次?
因为ArraryList是有序的,所以会先从第一个位置的数据进行判断,上面需要判断的对象是第四个,所以需要判断四次
因此添加自定义类在对象中时,必须要再在自定义类中重写equals方法

迭代器(Iterator):

Collection接口实现了Iterator接口迭代器中有类模板,类似于指针,遍历完数据后,就指向了最后一个位置集合将集合中的元素值给迭代器,而不是将元素直接给迭代器,因此,在迭代器中不可以进行集合的操作,但是可以用迭代器特有的remove()方法对集合进行操作,就是能够对迭代器外的集合(传入元素值的那个集合) 进行操作


使用迭代器遍历集合:

 Iterator iterator=c2.iterator();
        while (iterator.hasNext()){
            System.out.print(iterator.next()+"t");
        }

结果:

123	321	引用类型	collection.T@a5bd2
集合对象 . toArray()和数组对象 . asList():

toArray():将集合转换为数组
as.List():将数组转换为集合

toArray():

将集合c2转换为数组arr,然后遍历

Object[] arr =c2.toArray();
        for (int i = 0; i < arr.length; i++) {
            System.out.println(arr[i]);
        }

as.List():

将数组转换为集合,但是要注意:集合不能存储基本数据类型,所以不能存储int,long等等基本数据类型

List ob=Arrays.asList(new Integer[]{12,65});
        Iterator iterator1 =ob.iterator();
        while(iterator1.hasNext()){
            System.out.println(iterator1.next());
        }
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/711515.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号