JAVA SE 熟知的集合故事

什么是集合框架

我们或多或少掌握了许多的数据结构知识,有栈、队列、链表等,这些具体的数据结构通过JDK的开发者们的设计与实现,用JAVA语言编写了许多接口与实现类,这些统称为集合 框架。先研究怎么使用这些集合,再想着实如何实现的,最后再研究有没有更好的方法去改良优化这些集合的实现。

明确一点,集合是为我们使用的,所以在使用过程中要结合实际情况,让自己的代码更安全,更高效。加油,4.12 00点01分

 

JAVA集合类库将接口interface和实现implementation分离

 

集合类的基本接口

Collection

List

 

List是有序集合,元素采用add方法添加元素时,元素会添加到特定的位置,默认的是按照添加顺序。

如果想要访问List中的元素,List提供了2中方法。1.使用迭代器访问 2.使用整数索引来访问。

LinkedList

LinkedList是可以在任何未知高效率的插入和删除操作,我们平时操作的时候正常不会选择LinkedList,它有一个非常大的缺点:查找一个元素会变得非常的慢,这里在后面ArrayList的时候还会聊到。首先它是双链表结构,链表在插入删除方面特别高效,但是在查找方面就非常慢了,每一次查找都必须从链表头查询到所查元素。下图是双链表:

通过这张图能看出来,每一个节点都存放着前驱节点的引用。怎么用来看代码:

List<String> a = new LinkedList<>();

a.add("wangwei");

a.add("vivian");

a.add("wwang");

List<String> b = new LinkedList<>();

b.add("x");

b.add("y");

b.add("z");

b.add("o");

使用迭代器和其提供的方法可以遍历并且删除插入增加节点,有一点需要注意,任何一个长度为n的双链表LinkedList都有n+1个位置可以插入新节点,每选中一个节点插入的时候,都会在指向该节点的前方插入新节点。

ListIterator<String> aIter = a.listIterator();

Iterator<String> bIter = b.iterator();

//将bIter的元素全部并到aIter上

while (bIter.hasNext()){

if(aIter.hasNext())aIter.next();

aIter.add(bIter.next());

}

System.out.println(a);

//全部移除aIter的第二个元素

bIter = b.iterator();

while(bIter.hasNext()){

bIter.next();

if(bIter.hasNext()){

bIter.next();

bIter.remove();

}

}

System.out.println(b);

//从aIter中移除bIter中含有的全部元素

a.removeAll(b);

System.out.println(a);

最终输出的结果:

[wangwei, x, vivian, y, wwang, z, o]

[x, z]

[wangwei, vivian, y, wwang, o]

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值