第十九天
List接口
List接口继承了Collection,List集合是有序的,且允许元素重复的.它也具备了Collection相关的功能包括Object的 toArray和迭代器Iterator.
但是List还有特有的功能:
void add(int index,Object element):在指定的索引处插 入元素
Object get(int index):获取指定位置处的元素 + int size():一种新的集合遍历方式
Object remove(int index):删除指定位置处的元素
Object set(int index,E element):修改指定位置处的元素(替换)
List集合如何去重呢?
方法一
新建一个空的集合去存储原有集合中的非重复元素,以此来保证集合的元素唯一,集合中Collection/List—>contains(Object o)底层依赖于Object的equals方法
而List现在存储的是String类型,本身重写Object的equals,所以比较的是内容是否相同.
方法二
使用选择排序的思想
使用0角标对应的元素依次和后面角标对应的元素进行比较,小的往前方法.依次这样比较,1角标,2角标…
集合列表角标从0开始遍历当前集合然后使用0角标对应的元素依次和后面对应的元素进行比较,如果后面的元素和前面的相同了,那么将后面的元素删除掉
角标–
增强for循环
JDK5之后提供了一个新的特殊功能,增强for循环,用来代替集合中迭代器去遍历集合使用的(优先在集合中使用).
格式:
for(存储的引用数据类型 变量名: 集合/数组对象){ //集合使用居多,数组一般都是使用普通for
使用变量名即可
}
需要注意的是当前集合对象不能为空(即为null).
foreach语句:增强for它本身就是获取迭代器,如果当前集合为空呢么肯定会抛出空指针异常.
Vector集合
Vector相比于ArrayList的线程更安全,但是它比ArrayList慢,所以在不要求线程安全的情况下大部分使用后者.
Vector的特有功能:
添加
public void addElement(Object obj):在vector对象的末尾添加元素 ------> 一直使用的add(Object e)
删除
public boolean removeElement(Object obj):删除元素
获取功能
public Object elementAt(int index):获取指定位置的元素---->类似于 public Object get(int index)
public Enumeration elements() :Vector集合的专有遍历方式---->类似于 Iterator literator()
接口
boolean hasMoreElements():判断是否有更多的元素可以迭代
Object nextElement() 获取元素
插入排序
核心思想:使用1角标对应的元素进行和0角标比较
如果前面元素大,向右移动,确定角标1对应的元素的位置,再次使用2角标对应的元素依次和1和0都元素比较
依次这样比较…
Integer类:包含了int类型的值:
Integer实现自然排序(默认升序排序)
public int compareTo(Integer anotherInteger) { // 8 34
return compare(this.value, anotherInteger.value);
8,34
}
8 34
public static int compare(int x, int y) { //提高程序的执行效率
return (x < y) ? -1 : ((x == y) ? 0 : 1);
}