Java教程

【JavaSE】5.集合Collection:List、Set;Map

本文主要是介绍【JavaSE】5.集合Collection:List、Set;Map,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!



title: JavaSE_5.集合Collection:List、Set;Map
date: 2020-11-09 20:01:08
tags: JavaSE

泛型<>

单列集合List、Set;双列集合:Map

Collection接口:
list接口(ArrayList、LinkedList)、set接口(HashSet、TreeSet、LInkedSet)
Map接口:
HahMap(实现类)、TreeMap(实现类)

ArrayLIst方法:

boolean add(E e); //把参数假如对象集合,返回值代表是否增加成功boolean addAll(Collection<? extends E>  c);  //指定集合中的所有元素添加到此集合void clear();  //清除集合中所有元素boolean remove(Object o)  //移除指定元素boolean removeAll(Collection<?> c);  //只删除c中有的元素,c是通缉令,删除c里面的坏人。boolean retainAll(Collection<?> c);  //只保留c中有的元素,c是良民证,留下c里面的好人。boolean contains(Object o);          //如果此集合包含指定的元素,则返回 true 。boolean containsAll(Collection<?> c); //如果此集合包含了c,包含关系&&是个大集合,则返回true。boolean isEmpty();  //集合里面没有元素 , 返回trueboolean equals(Object o);  //比对的方法int size();          //返回此集合中的元素数量。Object\[\] toArray();  //返回一个包含此集合中所有元素的数组。

List(底层是数组)

特点:

  1. 可以有重复元素;
  2. 有序,有索引,index从1开始

常用的方法:

//对List进行增删操作boolean add(E e);   //将指定的元素追加到此列表的末尾(可选操作)。void add(int index, E element);   //将指定的元素插入此列表中的指定位置(可选操作)。boolean addAll(Collection<? extends E> c);  //按指定集合的迭代器(可选操作)返回的顺序将指定集合中的所有元素附加到此列表的末尾。void clear();   //从此列表中删除所有元素(可选操作)。boolean remove(Object o);   //从列表中删除指定元素的第一个出现(如果存在)(可选操作)。boolean removeAll(Collection<?> c);   //从此列表中删除包含在指定集合中的所有元素(可选操作)。//判断有什么:boolean contains(Object o);             //如果此列表包含指定的元素,则返回 true 。boolean containsAll(Collection<?> c);   //如果此列表包含指定 集合的所有元素,则返回true。//获取元素E get(int index);   //返回此列表中指定位置的元素。int indexOf(Object o);   //返回此列表中指定元素的第一次出现的索引,如果此列表不包含元素,则返回-1。boolean isEmpty();   //如果此列表不包含元素,则返回 true 。\[极少用到\]//保留元素、设置元素boolean retainAll(Collection<?> c);   //仅保留此列表中包含在指定集合中的元素(可选操作)。E set(int index, E element);   //用指定的元素(可选操作)替换此列表中指定位置的元素。int size();   //返回此列表中的元素数。

可以对Object类里面的equals进行重写
boolean equals(Object o);     // 将指定的对象与此列表进行比较以获得相等性。

Set(底层是链表)

int size();   //返回元素个数add(Object obj);   //添加元素remove(Object obj);   //删除元素boolean contains(Object obj);  //判断是否包含元素iterator();  //把set装到迭代器里面

List的遍历

  • for循环,(利用list.get(i); )
  • 迭代器:将Set装到迭代器里面
Iterator it = list.iterator();while(it.hasNext()){
   System.out.println(it.next());}

  • 增强for

使用迭代器的速度比较快,get方法太慢,不推荐,在不需要更改集合的的时候,可以使用foreach

ArrayList的特性:

  1. 针对LinkedList,ArrayList查询效率高,ArrayList增删效率低。
  2. ArrayList的底层实现依靠数组
  • 对于add方法,先看看数组的长度够不够。ensureCapacityInternal(size + 1);

hashCode()、equals()方法的重写

Collections工具类

HashMap作业20201202

已知如下:
下表为某班级四次考试成绩单,

  • 要求使用HashMap
  • 要求使用LinkedList存储考试次数,有几次考试就有几个HashMap
  • 注意:后台用户是知道学生姓名的
    形式如:LinkedList<HashMap

要求是实现的功能

(1)查询某次考试的总成绩?(具体考试次数由后台用户输入Scanner决定)。
(2)查询某个学生的总成绩?(具体学生由后台用户输入Scanner决定)。
(3)查询某个学生的平均成绩?(具体学生由后台用户输入Scanner决定)。
(4)查询全班平均分最高的一次考试成绩是哪次,并输出平均成绩的具体值。
(5)查询某个学生的某次考试成绩(学生姓名和考试次数均由后台用户输入)。

public interface scoreImp {
    //    第一个列表保存HashMap对应所有人的第一次成绩
    //    第二个列表保存HashMap对应所有人的第二次成绩//  //    以此类推
    public static LinkedList<HashMap<String, Integer>> list = new LinkedList<>();
    HashMap<String, Integer> m = new HashMap<String, Integer>();

    void 查询某次考试总成绩(int n);

    void 查询某个学生的总成绩(String str);

    void 查询某个学生的平均成绩(String str);

    void 查询全班平均分最高的一次考试与平均成绩();

    void 查询某个学生的某次考试的成绩(String str , int n);}

               

这篇关于【JavaSE】5.集合Collection:List、Set;Map的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!