Java 集合回顾

一、Set和List的区别


1、SET接口实例:存储无序的、不重复的数据;List接口实例存储有序的、可以重复的数据;
2、SET检索效率低,删除和插入的效率高,插入和删除不会引元素位置改变;(HashSet、TreeSet)
List查找元素效率高,插入和删除的效率低,因为会引起其他元素位置的改变;(ArrayList、LinkedList、Vector)

二、ArrayList


ArrayList类是一个可以动态修改的数组,与普通数组的区别就是它是没有固定大小的限制,我们可以添加或删除元素。

实例:[Google, Runoob, Taobao, Weibo]
ArrayList<String> sites = new ArrayList<String>();
1、添加元素:add(值);
2、访问元素:get(索引值),数组索引从0开始;
3、修改元素:set(索引值, 值);
4、删除元素:remove(索引值);
5、计算大小:size();
6、遍历:for循环、for-each;
7、排序:Collections.sort(sites);

三、LinkedList


链表是一种常见的基础数据结构,是一种线性表,但是并不会按线性的顺序存储数据,而是在每一个节点里存到下一个节点的地址。

链表可分为单项链表和双向链表:
1、单向链表包含两个值:当前节点的值和一个指向下一个节点的链接;
2、双向链表有三个值:数值、向后的节点链接、向前的节点链接;

实例:[Google, Runoob, Taobao, Weibo]
LinkedList<String> sites = new LinkedList<String>();

与ArrayList相比,以下操作推荐使用LinkedList:1-6
1、在列表开头添加元素:addFirst(值);
2、在列表结尾添加元素:addLast(值);
3、在列表开头移除元素:removeFirst();
4、在列表结尾移除元素:rermoveLast();
5、获取列表开头元素:getFirst();
6、获取列表结尾元素:getLast();
7、计算链表大小:size()
8、迭代元素:for循环、for-each;

ArrayList和LinkedList比较:
1、使用ArrayList的情况:
(1)频繁访问列表中的某一个元素;
(2)只需要在列表末尾进行添加和删除元素操作;

2、使用LinkedList的情况:
(1)需要通过循环迭代来访问列表中的某些元素;
(2)需要频繁的在列表开头、中间、末尾等位置进行添加和删除元素;


四、HashSet


HashSet基于HashMap实现,是一个不允许有重复元素的集合;
允许有Null值、无序、线程不安全;

实例:[Google, Runoob, Zhihu, Taobao]
HashSet<String> sites = new HashSet<String>();

1、添加元素:add(值),重复的元素不会被添加;
2、判读元素是否存在:contains(值);
3、删除元素:remove(值);
4、删除所有元素:clear();
5、计算大小:size();
6、迭代:for-each;


五、HashMap


HaspMap是一个散列表,存储的内容是键值(key-value)对映射;
具有很快的访问速度、最多允许一条记录的建为null、不支持线程同步、无序;

实例:{1=Google, 2=Runoob, 3=Taobao, 4=Zhihu}
HashMap<Integer, String> Sites = new HashMap<Integer, String>();

1、添加元素:put(键, 值);
2、访问元素:get(键);
3、删除元素:remove(键);
4、删除所有:clear();
5、计算大小:size();
6、迭代HashMap:获取所有key-keySet()、获取所有value-values()

 // 输出 key 和 value
for (Integer i : Sites.keySet()) {
	System.out.println("key: " + i + " value: " + Sites.get(i));
}

// 返回所有 value 值
for(String value: Sites.values()) {
  // 输出每一个value
  System.out.print(value + ", ");
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值