【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();  //集合里面没有元素 , 返回true
boolean 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工具类

猜你喜欢

转载自blog.csdn.net/weixin_43801418/article/details/110632150
今日推荐