学习笔记:单列集合,Collection、list 和 set接口

常见数据结构:栈(stack)、队列(queue)、数组(Array)、链表(linked list)、红黑树(binary tree)

红黑树的约束 :
1. 节点可以是红色的或者黑色的
2. 根节点是黑色的
3. 叶子节点 ( 特指空节点 ) 是黑色的
4. 每个红色节点的子节点都是黑色的
5. 任何一个节点到其每一个叶子节点的所有路径上黑色节点数相同

Collection 接口:单列集合

抽象方法:

boolean add(E e)向集合中添加一个元素,如果集合对象被添加操作改变了,则返回 true。E 是元素的数据类型
boolean addAll(Collection c)向集合中添加集合 c 中的所有元素,如果集合对象被添加操作改变了,则返回 true。
void clear()清除集合中的所有元素,将集合长度变为 0。
boolean contains(Object o)判断集合中是否存在指定元素
boolean containsAll(Collection c)判断集合中是否包含集合 c 中的所有元素
boolean isEmpty()判断集合是否为空
Iterator<E>iterator()返回一个 Iterator 对象,用于遍历集合中的元素
boolean remove(Object o)从集合中删除一个指定元素,当集合中包含了一个或多个元素 o 时,该方法只删除第一个符合条件的元素,该方法将返回 true。
boolean removeAll(Collection c)从集合中删除所有在集合 c 中出现的元素(相当于把调用该方法的集合减去集合 c)。如果该操作改变了调用该方法的集合,则该方法返回 true。
boolean retainAll(Collection c)从集合中删除集合 c 里不包含的元素(相当于把调用该方法的集合变成该集合和集合 c 的交集),如果该操作改变了调用该方法的集合,则该方法返回 true。
int size()返回集合中元素的个数
Object[] toArray()把集合转换为一个数组,所有的集合元素变成对应的数组元素。

List 接口:

方法:

方法名称说明
E get(int index)获取此集合中指定索引位置的元素,E 为集合中元素的数据类型
int index(Object o)返回此集合中第一次出现指定元素的索引,如果此集合不包含该元
素,则返回 -1
int lastIndexOf(Object o)返回此集合中最后一次出现指定元素的索引,如果此集合不包含该
元素,则返回 -1
E set(int index, Eelement)将此集合中指定索引位置的元素修改为 element 参数指定的对象。
此方法返回此集合中指定索引位置的原元素
List<E> subList(int fromlndex, int tolndex)返回一个新的集合,新集合中包含 fromlndex 和 tolndex 索引之间
的所有元素。包含 fromlndex 处的元素,不包含 tolndex 索引处的
元素

 ArrayList 类:

 采用数组结构,查找快,增删慢

方法:Collection 、List 所有方法

无参:创建长度10的空列表,如果列表元素比较多,每次扩容浪费内存。最好用一参构造指定长度

一参:new ArrayList(100);

Vector 类:

线程安全的List,1.2以后java添加了List

LinkedList 类:

采用链表结构,增删快,查找慢(没有下标)

方法:Collection 、List 所有方法,新增以下(对首尾操作)

方法名称说明
void addFirst(E e)将指定元素添加到此集合的开头
void addLast(E e)将指定元素添加到此集合的末尾
E getFirst()返回此集合的第一个元素
E getLast()返回此集合的最后一个元素
E removeFirst()删除此集合中的第一个元素
E removeLast()删除此集合中的最后一个元素

data.push(100);        //压栈

Integer i = data.pup();        //弹栈

迭代器: Iterator 和 ListIterator

用foreach遍历集合,它的底层还是Iterator!!!!

  • boolean hasNext():如果被迭代的集合元素还没有被遍历完,则返回 true。
  • Object next():返回集合里的下一个元素。指针后移一位。
  • void remove():删除集合里上一次 next 方法返回的元素。
  • void forEachRemaining(Consumer action):这是 Java 8 为 Iterator 新增的默认方法,该方法可使用 Lambda 表达式来遍历集合元素。
// 创建一个集合
        Collection objs = new HashSet();
        objs.add("C语言中文网Java教程");
        objs.add("C语言中文网C语言教程");
        objs.add("C语言中文网C++教程");
        // 调用forEach()方法遍历集合
        // 获取books集合对应的迭代器
        Iterator it = objs.iterator();
        while (it.hasNext()) {
            // it.next()方法返回的数据类型是Object类型,因此需要强制类型转换
            String obj = (String) it.next();
            System.out.println(obj);
            if (obj.equals("C语言中文网C语言教程")) {
                // 从集合中删除上一次next()方法返回的元素
                it.remove();
            }
            // 对book变量赋值,不会改变集合元素本身
            obj = "C语言中文网Python语言教程";
        }
        System.out.println(objs);

                遍历器和修改元素值的方法:

 用foreach也不行,它底层也是Iterator ,只能用fori,然后用set(下标,值)去改

可以使用ListIterator!!!

ListIterator

变量和类型方法描述
voidadd​(E e)

将指定的元素插入列表(可选操作)。

booleanhasNext()

如果此列表迭代器在向前遍历列表时具有更多元素,则返回 true

booleanhasPrevious()

如果此列表迭代器在反向遍历列表时具有更多元素,则返回 true

Enext()

返回列表中的下一个元素并前进光标位置。

intnextIndex()

返回后续调用 next()将返回的元素的索引。

Eprevious()

返回列表中的上一个元素并向后移动光标位置。

intpreviousIndex()

返回后续调用 previous()将返回的元素的索引。

voidremove()

从列表中删除 next()previous() (可选操作)返回的最后一个元素。

voidset​(E e)

用指定的元素替换 next()previous()返回的最后一个元素(可选操作)。

foreach 增强 for

底层用的是Iterator

for ( 元素的数据类型 变量 : Collection 集合 or 数组 ){
// 写操作代码
}

set 接口

没有下标,没有重复元素 

方法:继承collection的方法

因为没有下标,所以没有get方法,可通过Iterator迭代器或toArray方法,获取元素

HashSet 集合

散列存储,无序

TreeSet 集合

二叉树存储,有序,自然顺序
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值