Java容器---List
List 承诺可以将元素维护在特定的序列中。List 接口在Collection的基础上添加了大量的方法,使得可以在List的中间插入和移除元素。
有两种类型的List:
-----基本的ArrayList,它长于随机访问元素,但是在List的中阅插入和移除元素时较慢;
-----LinkedList,它通过代价较低的在List中间进行的插入和删除操作(链表的特性),提供了优化的顺序访 问。LinkedList在随机访问方面相对比较慢,但是它的特性集较ArrayList 更大。
(1)代码1:演示List特有方法
public class ListDemo {
/**
* @param args
*/
public static void main(String[] args) {
List list = new ArrayList();
methodDemo(list);
}
/*
* 演示List特有的方法。
*/
public static void methodDemo(List list){
//1,常规添加元素。
list.add("abc1");
list.add("abc2");
list.add("abc3");
//2,插入元素。
// list.add(1,"hehe");
//3,删除。
// list.remove(1);
//4,获取。
// System.out.println(list.get(1));
// System.out.println(list.indexOf("abc3"));
//5,修改。
// list.set(1, "kk");
//取出集合中所有的元素。
for (Iterator it = list.iterator(); it.hasNext();) {
System.out.println("iterator:"+it.next());
}
//list集合特有的取出方式。
for (int i = 0; i < list.size(); i++) {
System.out.println("get:"+list.get(i));
}
// System.out.println(list);
}
}
(2)代码2:迭代器listIterator()演示
public class ListIteratorDemo {
/**
* @param args
*/
public static void main(String[] args) {
List list = new ArrayList();
list.add("abc1");
list.add("abc2");
list.add("abc3");
list.add("abc4");
/*
//在遍历的过程中,如果遍历到abc2,添加一个元素haha
for (Iterator it = list.iterator(); it.hasNext();) {
Object obj = it.next();//java.util.ConcurrentModificationException
//迭代过程中使用了使用了集合对象同时对元素进行操作。导致了迭代的不确定性。引发了该异常。
//解决思想:在迭代过程中,想要执行一些操作,使用迭代器的方法就可以了。
if(obj.equals("abc2")){
list.add("haha");
}
}*/
// 使用list集合的特有的迭代器。ListIterator 通过List集合的方法listIterator()获取该迭代器对象。
// ListIterator可以实现在迭代过程中的增删改查。
for (ListIterator it = list.listIterator(); it.hasNext();) {
Object obj = it.next();
if(obj.equals("abc2")){
it.add("haha");
}
}
System.out.println(list);
}
}
(3)代码3:LinkedList方法演示
public class LinkedListDemo {
/**
* @param args
*/
public static void main(String[] args) {
//1,创建一个链表对象。//演示 XXXFirst XXXLast。
LinkedList link = new LinkedList();
//2,添加方法。
link.addFirst("abc1");
link.addFirst("abc2");
link.addFirst("abc3");
//3,获取元素。
// System.out.println(link.getFirst());
// System.out.println(link.getFirst());
//4,删除元素。
// System.out.println(link.removeFirst());
// System.out.println(link.removeFirst());
//取出link中所有元素。
while(!link.isEmpty())
System.out.println(link.removeLast());
}
}
(4)通过LinkedList实现一个堆栈,或者队列数据结构。
public class LinkedListTest {
/**
* @param args
*/
public static void main(String[] args) {
/*
* 练习: 请通过LinkedList实现一个堆栈,或者队列数据结构。
* 堆栈: 先进后出。 First In Last Out FILO.
* 队列: 先进先出。First In First Out FIFO.
*
*/
//1,创建自定义的队列对象。
MyQueue queue = new MyQueue();
//2,添加元素。
queue.myAdd("abc1");
queue.myAdd("abc3");
queue.myAdd("abc4");
queue.myAdd("abc5");
//3,获取所有元素。先进先出。
while(!queue.isNull()){
System.out.println(queue.myGet());
}
}
}
/*
* 描述一个队列数据结构。内部使用的是LinkedList。
*/
class MyQueue{
private LinkedList link;
MyQueue(){
link = new LinkedList();
}
/**
* 添加元素的方法。
*/
public void myAdd(Object obj){
//内部使用的是linkedlist的方法。
link.addFirst(obj);
}
/**
* 获取队列元素的方法。
*/
public Object myGet(){
return link.removeLast();
}
/**
* 集合中是否有元素的方法。
*/
public boolean isNull(){
return link.isEmpty();
}
}
2018-01-03
内容来自传智播客和java编程思想
Java容器---List的更多相关文章
- 【Java心得总结七】Java容器下——Map
我将容器类库自己平时编程及看书的感受总结成了三篇博文,前两篇分别是:[Java心得总结五]Java容器上——容器初探和[Java心得总结六]Java容器中——Collection,第一篇从宏观整体的角 ...
- 【Java心得总结六】Java容器中——Collection
在[Java心得总结五]Java容器上——容器初探这篇博文中,我对Java容器类库从一个整体的偏向于宏观的角度初步认识了Java容器类库.而在这篇博文中,我想着重对容器类库中的Collection容器 ...
- 【Java心得总结五】Java容器上——容器初探
在数学中我们有集合的概念,所谓的一个集合,就是将数个对象归类而分成为一个或数个形态各异的大小整体. 一般来讲,集合是具有某种特性的事物的整体,或是一些确认对象的汇集.构成集合的事物或对象称作元素或是成 ...
- Java 容器(list, set, map)
java容器类库的简化图: (虚线框表示接口, 实线框表示普通的类, 空心箭头表示特定的类实现了接口, 实心箭头表示某个类可以生成箭头所指的类对象) 继承Collection的主要有Set 和 Lis ...
- Java - 容器详解
一.ArrayList 长度可变数组,类似于c++ STL中的vector. 元素以线性方式连续存储,内部允许存放重复元素. 允许对元素进行随机的快速访问,但是向ArrayList中插入和删除元素的速 ...
- Java 容器:Collection 初探之 List
1 ///: JavaBasic//com.cnblogs.pattywgm.day1//CollectionTest.java 2 3 package com.cnblogs.pattywgm.da ...
- java容器---集合总结
思考为什么要引入容器这个概念? Java有多种方式保存对象(应该是对象的引用),例如使用数组时保存一组对象中的最有效的方式,如果你想保存一组基本类型的数据,也推荐使用这种方式,但大家知道数组是具有固定 ...
- 3)Java容器
3)Java容器 Java的集合框架核心主要有三种:List.Set和Map.这里的 Collection.List.Set和Map都是接口(Interface). List lst = new ...
- JAVA容器
JAVA容器 一.容器体系结构 java.util 二.迭代器Iterator<E> 迭代器是一种设计模式,可以遍历并选择序列中的对象,而开发人员并不需要了解该序列的底层结构.迭代器通常被 ...
- Java 容器相关知识全面总结
Java实用类库提供了一套相当完整的容器来帮助我们解决很多具体问题.因为我本身是一名Android开发者,包括我在内很多安卓开发,最拿手的就是ListView(RecycleView)+BaseAda ...
随机推荐
- ##3.Keystone 验证服务--openstack
##3.Keystone 验证服务 openstack pike 安装 目录汇总 http://www.cnblogs.com/elvi/p/7613861.html #SQL上创建数据库并授权 #K ...
- RBAC(Role-Based Access Control,基于角色的权限访问控制)—权限管理设计
RBAC模型的核心是在用户和权限之间引入了角色的概念,将用户和权限进行解耦,采用用户确定角色,角色分配权限,进而间接达到给用户分配角色的目的 这样采用的方式优点在于 (1)降低管理成本--由于一个角色 ...
- 蓝桥杯 密码脱落 LCS
9. 密码脱落(后来题目说是有问题,测试用例不会有E出现) X星球的考古学家发现了一批古代留下来的密码. 这些密码是由A.B.C.D 四种植物的种子串成的序列. 仔细分析发现,这些密码串当初应该是前后 ...
- CMMI-4中19个PA的大致描述
组织过程资产库下面有组织级标准过程库, 这个库里一共有19各PA(就是标准过程啦) PA的英文是Process Area CM(配置管理过程,英文是Configuration Manage ...
- UWP 常用文件夹
①KnownFolders KnownFolders.PicturesLibrary 等等列举 ②ApplicationData.Current ApplicationData.Current.Loc ...
- 2、C#基础 - Visual Studio 的版本选择和下载
有句话说:工欲善其事,必先利其器,我不推荐在学习一个语言时使用记事本练习,甚至说相当的排斥.当然了,你也可以选择你自己喜欢的方式.本系列推荐使用的IDE为vs2017 community版,银子不够的 ...
- JAVA9模块化详解(一)——模块化的定义
JAVA9模块化详解 前言 java9已经出来有一段时间了,今天向大家介绍一下java9的一个重要特性--模块化.模块化系统的主要目的如下: 更可靠的配置,通过制定明确的类的依赖关系代替以前那种易错的 ...
- 使用js做创建图片及删除图片 若有什么不对或不完整的地方,请大家提出来,谢谢
首先我们要在<body>中创建一个按钮<button>来用作点击创建图片,在<button>中写一个点击事件(随便命名), 在创建一个<div>存放图片 ...
- Java开发小技巧(二):自定义Maven依赖
前言 我们在项目开发中经常会将一些通用的类.方法等内容进行打包,打造成我们自己的开发工具包,作为各个项目的依赖来使用. 一般的做法是将项目导出成Jar包,然后在其它项目中将其导入,看起来很轻松,但是存 ...
- 出现JSONvalue failed .error is Illegal start of token
出现JSONvalue failed .error is Illegal start of token了? 别着急,抽根烟,喝杯水.开工: 1:判断是请求前报的错还是请求后报的错!!这个很重要,我就是 ...