-
- 数组固定长度,集合可以变长
- 数组可以存基本类型和引用类型,集合只能存引用类型
-
public static void shuffle(List> list) : // 打乱集合顺序。
public static void sort(List list) : // 将集合中元素按照默认规则排序。
public static void sort(List list,Comparator super T> ) : // 将集合中元素按照指定规则排序。
static boolean addAll(Collection super T> c, T… elements): // 将所有指定的元素添加到指定的集合。- 案例
-
Comparator比较器
-
指定排序的规则的一个接口(java.util包下),重写该接口下的一个方法compare(T o1, T o2)即可!
- // 升序排序!
Collections.sort(list1, new Comparator() {
// 此方法是排序的核心
@Override
public int compare(Integer o1, Integer o2) {
// 前-后 升序! 后-前 降序!(前后针对的是2个参数o)
return o1-o2;
}
- // 升序排序!
-
-
特有方法
-
ArrayList 主要实现类
- public boolean add(E e); // 直接在集合的末尾添加元素数据e
public void add(int index,E e); // 在集合指定index索引位置添加元素数据e
public E get(int index); // 获得集合总指定index索引位置的元素数据
public E remove(int index); // 删除集合中指定index索引位置的元素数据
public boolean remove(Object obj); // 删除集合中指定的元素数据obj
public E set(int index,E e); // 将集合index索引位置的元素数据修改为e
public int size(); // 获得集合里面元素数据的个数!
- public boolean add(E e); // 直接在集合的末尾添加元素数据e
-
java.util.linkedList集合数据存储的结构是链表结构(双向链表)。方便元素添加、删除的集合。
- public void addFirst(E e): //将指定元素插入此列表的开头。
public void addLast(E e): // 将指定元素添加到此列表的结尾。
public E getFirst(): // 返回此列表的第一个元素。
public E getLast(): // 返回此列表的最后一个元素。
public E removeFirst(): // 移除并返回此列表的第一个元素。
public E removeLast(): // 移除并返回此列表的最后一个元素。
public E pop(): // 从此列表所表示的堆栈处d出一个元素。
public void push(E e): // 将元素推入此列表所表示的堆栈。
public boolean isEmpty():// 如果列表不包含元素,则返回true。
- public void addFirst(E e): //将指定元素插入此列表的开头。
-
创建Collection接口的子类对象
Collection coll = new ArrayList();-
作为父接口,提供的是所有单列集合共性的方法,没有 索引相关的 *** 作方法 比如 get(index)
索引相关的 *** 作 属于List特有的方法
-
-
.HashSet是Set接口的一个实现类,它所存储的元素是不可重复的,并且元素都是无序的(即存取顺序不能保证一致)。 HashSet set = new HashSet<>();
-
给HashSet中存放自定义类型元素时,需要重写对象中的hashCode和equals方法,建立自己的比较方式,才能保证HashSet集合中的对象唯一。
- 重写hashCode和equals方法,每new一个对象,都是一个新的(地址值不一样,hash值一样)【hash值一样,那么向set里面添加不进去第二个对象了】
-
.linkedHashSet是HashSet下面有一个子类java.util.linkedHashSet,它是链表(有序)和哈希表(数组、链表、红黑树)组合的一个数据存储结构。
- 案例
-
-
三种Set集合特点对比
-
- HashSet:
无序(存进去元素数据的顺序与取出来的元素数据的顺序不一样),不可重复! linkedHashSet:
有序(存进去是什么顺序,取出来就是什么顺序),不可重复! TreeSet:
可排序(默认自然顺序,可以重写Comparator接口的compare方法指定规则排序),不可重复!
- HashSet:
-
-
TreeSet集合是Set接口的一个实现类,底层依赖于TreeMap,是一种基于红黑树的实现
-
- 元素唯一(不可重复)
-
-
元素没有索引
-
使用元素的自然顺序对元素进行排序,或者根据创建 TreeSet 时提供的 Comparator 比较器 进行排序,具体取决于使用的构造方法:
- 案例
② 避免了类型强转的麻烦。
Map 双列集合 * HashMap-
- linkedHashMap
:HashMap下有个子类linkedHashMap,存储数据采用的哈希表结构+链表结构。通过链表结构可以保证元素的存取顺序一致;通过哈希表结构可以保证的键的唯一、不重复,需要重写键的hashCode()方法、equals()方法。
- linkedHashMap
Setkeys = map.keySet(); for (String key : keys) { //System.out.println("key:"+key); // 通过key获得value String value = map.get(key); System.out.println("key="+ key+", value="+value); }
- // 通过map的engtrySet()方法获得map中所有(key,value)键值对(entry实体)构成的Set集合
Set> entrySet = map.entrySet();
// 遍历set集合,获得单个的(key,value)键值对(entry实体)
for (Map.Entryentry : entrySet) {
// 直接通过getKey获得键(key)的值!通过getValue获得值(value)的值!
System.out.println(“key=”+entry.getKey()+", value="+entry.getValue());
}
public V remove(Object key) : // 把指定的键 所对应的键值对元素 在Map集合中删除,返回被删除元素的值。
public V get(Object key): // 根据指定的键,在Map集合中获取对应的值。
public Set keySet() : // 获取Map集合中所有的键,存储到Set集合中。
public Set
public boolean containKey(Object key) : // 判断该集合中是否有此键。
- for(数据类型 变量名称:集合对象或者数组){ }
【快捷键:被遍历集合对象.iter+回车】
Iterator iterator = coll.iterator();
-
Iterator接口的常用方法: ·
public boolean hasNext(): // 如果仍有元素可以迭代,则返回 true。
public E next(): // 返回迭代的下一个元素。-
注意1:在进行集合元素获取时,如果集合中已经没有元素了,还继续使用迭代器的next方法,将会抛出java.util.NoSuchElementException没有集合元素异常
注意2:在进行集合元素获取时,如果添加或移除集合中的元素 , 将无法继续迭代 , 将会抛出ConcurrentModificationException并发修改异常.-
- 首先创建迭代器对象,集合对象.iterator(); 2. hastNext() 判断是否有下一个元素 3. next();//取出元素
-
无法重复遍历集合。除非重新创建迭代器对象
- 迭代器对象.remove();
每删除一个,cursor属性回退一个
- 迭代器对象.remove();
-
-
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)