JAVA中的集合概览

版权声明:未经允许,随意转载,请附上本文链接谢谢(づ ̄3 ̄)づ╭❤~
http://blog.csdn.net/xiaoduan_/article/details/79343236

JAVA集合

JAVA中的集合框架

@JAVA中的集合框架

List(列表)
  • List是元素有序并且可以重复的集合,称为序列
  • List可以精准的控制每个元素的插入位置,或删除某个位置的元素
  • List的两个主要实现类是ArrayList和LinkedList
ArrayList
  • ArrayList底层是由数组实现的
  • 动态增长,以满足应用程序的需求
  • 在列表尾部插入或者删除非常有效
  • 更适合查找和更新元素
  • ArrayList中元素可以为null
    List list=new ArrayList();
        list.add("hadoop");
        list.add("spark");
        list.add("Go");
        list.add("swift");
        //输出列表中元素的个数
        System.out.println("列表中元素的个数为:"+list.size());

        //遍历输出所有编程语言
        System.out.println("**************************************");
        for(int i=0;i<list.size();i++){
            System.out.print(list.get(i)+",");
        }

        //移除列表中的Go
        System.out.println();
        //list.remove(2);
        list.remove("Go");
        System.out.println("**************************************");
        System.out.println("移除Go以后的列表元素为:");
        for(int i=0;i<list.size();i++){
            System.out.print(list.get(i)+",");
        }       
LinkedList
  1. 概述
    • 与ArrayList一样,LinkedList也按照索引位置排序,但她的元素之间是双向链接的(双向链表)
    • 适合快速的插入和删除数据
    • LinkedList实现了List和Queue两个接口
  2. 构造方法
方法名说明
LinkedList()构造一个空列表
LinkedList(Collection<? extends E> c)构造一个包含指定collection中元素的列表,这些元素按照collection的迭代器返回的顺序排列
Set
  • Set是元素无序并且不可以重复的集合,被称为集
HashSet
  • HashSet是Set的一个重要实现类,成为哈希集
  • HashSet中的元素无序并且不可以重复
  • HashSet中只允许一个null元素
  • 具有良好的存取和查询性能
Iteratior(迭代器)
  • Iterator接口可以以统一的方式对各种集合元素进行遍历
  • hasNext()方法检测集合中是否有下一个元素
  • next()方法返回集合中的下一个元素
  • 迭代器只能使用一次,如果想再次使用需要重新构造
Iterator it = mySet.iterator();//mySet 为集合的名称
while (it.hasNext()) {          
System.out.println(it.next());      
}
Map
  • Map中的数据是以键值对(key-value)的形式存储的
  • key-value以Entry类型的对象实例存在
  • 可以通过key值快速地查找value
  • 一个映射不能包含重复的键
  • 每个键最多只能映射一个值
HashMap
  • 基于哈希表的Map接口的实现
  • 允许使用null值和null键
  • key值不允许重复
  • HashMap中的Entry对象是无序排列的
自定义对象存储在set中时,需要重写对象是否重复的比较方法

重写hashCode()方法(使用自动生成的默认也可以)和equals()方法

@Override
    public int hashCode() {
        final int prime = 31;
        int result = 1;
        result = prime * result + month;
        result = prime * result + ((name == null) ? 0 : name.hashCode());
        result = prime * result + ((species == null) ? 0 : species.hashCode());
        return result;
    }
    @Override
    public boolean equals(Object obj) {
        //判断对象是否相等,相等则返回true,不用继续比较属性了
        if(this==obj)
            return true;
        //判断obj是否是Cat类的对象
        if(obj.getClass()==Cat.class){
            Cat cat=(Cat)obj;
            return cat.getName().equals(name)&&(cat.getMonth()==month)&&(cat.getSpecies().equals(species));
        }
        return false;
    }
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值