java集合

目录

List

Map

Set

Queue


List

  • 在末尾添加一个元素:boolean add(E e)
  • 在指定索引添加一个元素:boolean add(int index, E e)
  • 删除指定索引的元素:E remove(int index)
  • 删除某个元素:boolean remove(Object e)
  • 获取指定索引的元素:E get(int index)
  • 获取链表大小(包含元素的个数):int size()
  • 初始化
List<String> list1 = new ArrayList<>();
list1.add("apple");
list1.add("pear");
list1.add("banana");
List<String> list2 = Arrays.asList("apple", "pear", "banana");
List<String> list3 = List.of("apple", "pear", "banana");//java9新增,不能有null,不能改值
  • 遍历
/**********迭代器*************/
for(Iterator<String> it = list1.iterator();it.hasNext();){
            System.out.println(it.next());
        }
/********for each************/
for(String s:list2){
            System.out.println(s);
        }

Map

HashMap

要正确使用HashMap,作为key的类必须正确覆写equals()hashCode()方法;

一个类如果覆写了equals(),就必须覆写hashCode(),并且覆写规则是:

  • 如果equals()返回true,则hashCode()返回值必须相等;

  • 如果equals()返回false,则hashCode()返回值尽量不要相等。

实现hashCode()方法可以通过Objects.hashCode()辅助方法实现。

Map<String,Integer> map= new HashMap<>();    //map实例化
        map.put("tom", 99);                  //map添加
        map.put("jerry", 89);
        for(Map.Entry<String,Integer> entry:map.entrySet()){    //map遍历
            String s = entry.getKey();    //获取键
            Integer score = entry.getValue();    //获取值
            System.out.println(s+"'s score is "+score);
        }

EnumMap

以一个非常紧凑的数组存储value,并且根据enum类型的key直接定位到内部数组的索引,并不需要计算hashCode(),不但效率最高,而且没有额外的空间浪费

TreeMap

保证遍历时以Key的顺序来进行排序

放入的Key必须实现Comparable接口。StringInteger这些类已经实现了Comparable接口,因此可以直接作为Key使用。作为Value的对象则没有任何要求

如果作为Key的class没有实现Comparable接口,那么,必须在创建TreeMap时同时指定一个自定义排序算法

自定义类key的类中某属性如果为包装类,则可以用该属性的compare
Map<Person, Integer> map = new TreeMap<>(new Comparator<Person>() {
            public int compare(Person p1, Person p2) {
                return p1.name.compareTo(p2.name);
            }
        })
自定义类key的类中某属性如果为基本类型,则需要自定义比较方法
Map<Student, Integer> map = new TreeMap<>(new Comparator<Student>() {
            public int compare(Student p1, Student p2) {
                return p1.score > p2.score?-1:p1.score == p2.score1?0:1;
            }
        });

Set

  • 将元素添加进Set<E>boolean add(E e)
  • 将元素从Set<E>删除:boolean remove(Object e)
  • 判断是否包含元素:boolean contains(Object e)

Queue

  • int size():获取队列长度;
  • boolean add(E)/boolean offer(E):添加元素到队尾;
  • E remove()/E poll():获取队首元素并从队列中删除;
  • E element()/E peek():获取队首元素但并不从队列中删除。

参考https://www.liaoxuefeng.com/wiki/1252599548343744/1265117217944672

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值