java总结:集合类

集合

Github地址 有空继续补代码
参考自廖雪峰java教程

出现的原因:

  • 数组初始化后大小不能变
  • 数组只能按顺序存取
    java提供了List,Set,Map三种集合类接口,支持泛型,统一用Iterator遍历
List

List接口方法:

  • 在末尾添加一个元素:void add(E e)
  • 在指定索引添加一个元素:void add(int index, E e)
  • 删除指定索引的元素:int remove(int index)
  • 删除某个元素:int remove(Object e)
  • 获取指定索引的元素:E get(int index)
  • 获取链表大小(包含元素的个数):int size()
  • boolean contains(Object o)
  • int indexOf(Object o)

多用ArrayList实现该接口
遍历代码

for (Iterator<String> it = list.iterator(); it.hasNext(); ) {
            String s = it.next();
            System.out.println(s);
        }

List内部并不是通过==判断两个元素是否相等,而是使用equals()方法判断两个元素是否相等,因此,要正确使用List的contains()、indexOf()这些方法,放入的实例必须正确覆写equals()方法

equals()方法的编写方法:

  • 先确定实例“相等”的逻辑,即哪些字段相等,就认为实例相等;
  • 用instanceof判断传入的待比较的Object是不是当前类型,如果是,继续比较,否则,返回false;
  • 对引用类型用Objects.equals()比较(因为用引用对象的equals时传入null会报错),对基本类型直接用==比较。
  • 使用Objects.equals()比较两个引用类型是否相等的目的是省去了判断null的麻烦。两个引用类型都是null时它们也是相等的
    示例代码
public boolean equals(Object o) {
    if (o instanceof Person) {
        Person p = (Person) o;
        return Objects.equals(this.name, p.name) && this.age == p.age;
    }
    return false;
}

补充基本类型和引用类型的区别
在这里插入图片描述

Map
Map<String, Student> map = new HashMap<>();
map.put("Xiao Ming", s);
for (String key : map.keySet()) {
    Integer value = map.get(key);
    System.out.println(key + " = " + value);
}
for (Map.Entry<String, Integer> entry : map.entrySet()) {
 	String key = entry.getKey();
    Integer value = entry.getValue();
    System.out.println(key + " = " + value);
}

正确使用Map必须保证:

  • 作为key的对象必须正确覆写equals()方法,相等的两个key实例调用equals()必须返回true;
  • 作为key的对象还必须正确覆写hashCode()方法,且hashCode()方法要严格遵循以下规范:
    • 如果两个对象相等,则两个对象的hashCode()必须相等;
    • 如果两个对象不相等,则两个对象的hashCode()尽量不要相等
Deque
Deque<String> dq = new LinkedList<>();

接口:

  • 将元素添加到队尾或队首:addLast()/offerLast()/addFirst()/offerFirst();
  • 从队首/队尾获取元素并删除:removeFirst()/pollFirst()/removeLast()/pollLast();
  • 从队首/队尾获取元素但不删除:getFirst()/peekFirst()/getLast()/peekLast();

注:

  • 用来取代List,Queue和Stack
  • 不要把null添加到队列中,否则poll()方法返回null时,很难确定是取到了null元素还是队列为空
Collections

Collections类提供了一组工具方法:

  • 创建空集合
  • 创建单元素集合
  • 创建不可变集合
  • 排序/洗牌等操作
    有空再研究
附类图

在这里插入图片描述
具体解释见:链接

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值