Java集合框架—List
Collection
|--List:元素是有序的,元素可以重复。因为该集合体系有索引。
|--ArrayList:底层的数据结构使用的是数组结构。特点:查询速度很快。但是增删稍慢。线程不同步。
|--LinkedList:底层使用的链表数据结构。特点:增删速度很快,查询稍慢。线程不同步。
|--Vector:底层是数组数据结构。线程同步。被ArrayList替代了。因为效率低。
|--Set:元素是无序,元素不可以重复。、
Collection定义了集合框架的共性功能。
1,添加
add(e);
addAll(collection);
2,删除
remove(e);
removeAll(collection);
clear();
3,判断。
contains(e);
isEmpty();
4,获取
iterator();
size();
5,获取交集。
retainAll();
6,集合变数组。
toArray();
List:
特有方法。凡是可以操作角标的方法都是该体系特有的方法。
增
add(index,element);
addAll(index,Collection);
删
remove(index);
改
set(index,element);
查
get(index):
subList(from,to);
listIterator();
int indexOf(obj):获取指定元素的位置。
ListIterator listIterator();
LinkedList:特有方法:
addFirst();
addLast();
getFirst();
getLast();
获取元素,但不删除元素。如果集合中没有元素,会出现NoSuchElementException
removeFirst();
removeLast();
获取元素,但是元素被删除。如果集合中没有元素,会出现NoSuchElementException
在JDK1.6出现了替代方法。
offerFirst();
offerLast();
peekFirst();
peekLast();
获取元素,但不删除元素。如果集合中没有元素,会返回null。
pollFirst();
pollLast();
获取元素,但是元素被删除。如果集合中没有元素,会返回null。
List集合特有的迭代器是ListIterator,其是Iterator的子接口。
在迭代时,不可以通过集合对象的方法操作集合中的元素。因为会发生ConcurrentModificationException异常。
所以,在迭代器时,只能用迭代器的放过操作元素,可是Iterator方法是有限的,只能对元素进行判断,取出,删除的操作,如果想要其他的操作如添加,修改等,就需要使用其子接口,ListIterator。该接口只能通过List集合的listIterator方法获取。
问题1、如何去除ArrayList中的重复元素?
思路:新建一个集合ArrayList2,将ArrayList1中的元素依次进行判断,若其不再ArrayList2中,则将其add到ArrayList2,最后ArrayList2即为去除了重复元素的集合。
代码如下:
import java.util.*; /*
去除ArrayList集合中的重复元素。 */ class ArrayListTest
{ public static void sop(Object obj)
{
System.out.println(obj);
}
public static void main(String[] args)
{
ArrayList al = new ArrayList(); al.add("java01");
al.add("java02");
al.add("java01");
al.add("java02");
al.add("java01");
// al.add("java03"); /*
在迭代时循环中next调用一次,就要hasNext判断一次。
Iterator it = al.iterator(); while(it.hasNext())
{
sop(it.next()+"...."+it.next());
}
*/ /**/
sop(al); al = singleElement(al); sop(al); } public static ArrayList singleElement(ArrayList al)
{
//定义一个临时容器。
ArrayList newAl = new ArrayList(); Iterator it = al.iterator(); while(it.hasNext())
{
Object obj = it.next(); if(!newAl.contains(obj))
newAl.add(obj); } return newAl;
}
}
最新文章
- redis并发问题
- Qt qml pageview 左右滑动分页组件
- [Android]RapidFloatingActionButton框架正式出炉
- MVVM小记
- 关于nginx的限速模块
- [LeetCode]题解(python):100 Same Tree
- Delphi中CoInitialize之探究
- .NET RSACryptoServiceProvider PEM + DER Support
- 必看谷歌HTML/CSS规范
- wince天气代码
- 5.volatile的应用
- js 获取纯web地址栏中URL传参
- laravel(lumen)配置读写分离后,强制读主(写)库数据库,解决主从延迟问题
- Django项目settings配置redis连接
- 学习基础和C语言基础调查
- 潭州课堂25班:Ph201805201 第九课 函数作用域和匿名函数 (课堂笔记)
- Linux 执行文本保存报错 是使用了记事本等工具打开之后导致的
- selenium学习一
- Rhino
- VS2015编译OpenSSL
热门文章
- C++中const型数据的小结
- 树莓派 Learning 002 装机后的必要操作 --- 00 修改键盘布局
- Learning Python 006 list(列表) 和 tuple(元组)
- iOS开发中,修改ASIHTTPRequest源码,禁止在POST时URL编码
- Cygwin install apt-cyg
- 【Qt文档阅读】事件系统
- jquery抽奖插件+概率计算
- python之05 操作系统用户密码修改
- Selenium2.0+TestNG+Ant+Jenkins自动化测试浅尝
- 树的直径-CF592D Super M