Java集合类:Collection、Map

数组和集合

  • 不同点

    • 数组的长度是不可变的,集合的长度是可变的

    • 数组可以存基本数据类型和引用数据类型

      集合只能存引用数据类型,如果要存基本数据类型,需要存对应的包装类

Java中的集合类主要由CollectionMap这两个接口派生而出;
Collection子接口:Set、List、Queue.

Set:无序、不可重复;
List:有序,可重复;
Map:

Collection集合只能存储单个元素,并且只能存储对象的地址。

集合类的特点:提供一种存储空间可变的存储模型,存储的数据容量可以发生改变。
                         数组中可以存储基本数据类型和引用类型,集合只能存储对象的地址

ArrayList<E>:
        可调整大小的数组实现
        <E>:是一种特殊的数据类型,泛型

ArrayList 底层就是一维数组,覆写了toString。
如何使用:
        在出现E的地方我们使用引用数据类型替换即可
        举例:ArrayList<String>,ArrarList<Student>

ArrayList和LinkedList区别:
       
数据结构不同:ArrayList 是Array(动态数组)的数据结构;LinkedList是Link(链表)的数据结构;
        效率不同:当随机访问List(get和set操作)时,ArrayList比LinnkedList的效率更高,因为因为LinkedList是线性的数据存储方式,所以需要移动指针从前往后依次查找。             当对数据进行增删(add和remove操作)时LinkedList比ArrayList的效率更高,因为ArrayList是数组,所以在其中进行增删操作时,会对操作点之后所有数据的下标索引造成影响,需要进行数据的移动。   

集合中用的是equal比较

Collection遍历-迭代器:

Iterator iterator():  返回此集合中元素的迭代器,通过集合对象的iterator()方法得到。

Iterator中的常用方法:

​ boolean hasNext(): 判断当前位置是否有元素可以被取出
​ E next(): 获取当前位置的元素,将迭代器对象移向下一个索引位置

Collection集合的遍历:

public class IteratorDemo{
    public static void main(String[] args){
        //创建集合对象
        Collection c = new ArrayList<>();
        c.add("hello");
        c.add("world");
        c.add("java");
        c.add("new been");

        Iterator<String> it = c.iterator();//返回此集合中元素的迭代器,通过集合的iterator()方法得到

        while(it.hasNext()){
            String s = it.next();
            System.out.println(s);
        }
    }
}

Map:

Map中的集合,元素是成对存在的,每个元素由键与值两部分组成,可以通过键找到对应的值。也成为双列集合。
        不能包含重复的键,值可以重复,每个键只能对应一个值。

HashMap<K,V>:存储数据采用的哈希表结构,元素的存取顺序不能保证一致。由于要保证键的唯一、不重复,需要重写键的hashCode()方法、equals()方法。

LinkedHashMap<K,V>:HashMap下有个子类LinkedHashMap,存储数据采用的哈希表结构+链表结构。通过链表结构可以保证元素的存取顺序一致;通过哈希表结构可以保证的键的唯一、不重复,需要重写键的hashCode()方法、equals()方法。

注意:Map接口中的集合都有两个泛型变量<K,V>,在使用时,要为两个泛型变量赋予数据类型。两个泛型变量<K,V>的数据类型可以相同,也可以不同。

                             方法                                                理解
void clear();清空Map
boolean containsKey(Object key);判断Map中是否包含这样的value
Set<Map.Entry<K,V>>entrySet();        把Map中的Entey<K,V>放入Set集合中
Object get(Object key);通过key取得value
Object put(Object key,Object value);向集合中添加键值对
boolean isEmpty();判断该集合是否为空
Object remove(Object key);        通过key将键值对删除
int size();获取Map中键值对的个数
Set keySet();把Map中的key放入Set集合中
Collection values();获取Map集合中所有的value


 

s s

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值