Colletion学习-01

Collection

|--List:元素有序,可重复,因为该集合体系有索引

|--ArrayList:底层的数据结构使用的是数组结构  查询速度快 线程不同步。

|--LinkedList:底层使用的是链表数据结构 增删速度很快 查询稍慢。

|--Vector:底层的数据结构使用的是数组结构 线程同步,被ArrayList替代了。

|--Set :元素无序,不可重复

List:

特有方法。凡是可以操作交表的方法都是该体系特有的方法。

add(index,element);

addAll(index,Collection);

remove(index);

set(index,element);

get(index);

subList(from,to);

listIterator();

假设ArrayList al = new ArrayList();

//获取所有元素

for(int x = 0,x<al.size(),x++)//List集合没有length属性

{

System.out.println(al.get(x));

}

ListIterator

列表迭代器

List集合特有的迭代器。ListIterator是Iterator的子接口

在迭代时 不可以通过集合对象的方法操作集合中的元素,因为会发生并发修改异常(ConcurrentModificationException)

所以在迭代时,只能用迭代器的方法操作元素,可是Iterator方法是有限的

只能对元素进行判断,取出,删除的操作

如果想要其他的操作如添加,修改,就需要其子接口 ListIterator

该接口只能通过List集合的ListIterator方法获取。

/*

Iterator it = al.iterator

while(it.hasNext())

{

//System.out.println(it.next());

Object obj = it.next();

if(obj.equlas("java"))

//al.add("java01") 此时,迭代器和集合都可以对引用进行操作--并发访问(不能对同一种元素进行多种操作)

//it.remove() 当打印时,obj元素不变,al容器中“java”被删除,将javac的引用从集合中删除了,但是obj在使用,所以可以被打印出来

System.out.println(obj);

}

System.out.println(al);

/*

ListIterator li = al.ListIterator();

while(li.hasNext())

{

Object obj = li.next();

if(obj.equlas("java"))

li.add("java02");//与上面绿色字体对比

}

LinkedList

特有方法:

addFirst();//把元素放到第一位 其他位上的依次后移

addLast();

getFirst();////获取元素但不删除

getLast();

removeFirst();//获取元素并且删除

removeLast();

remove如果列表为空 跑出NoSuchElementException

所以一般用

offerFirst();

offerLast();

addFirst/addLast 返回类型为void 而offerFirst/offerLast 返回类型为boolean

如果在一个有限的容器中插入时,超出容器长度,前者抛出异常 后者返回False

peekFirst();

peekLast();

获取元素不删除 如果没有元素 返回null

pollFirst();

pollLast();

获取元素并删除 如果没有元素, 返回null

LinkedList link = new LinkedList

时间: 2024-07-29 17:32:13

Colletion学习-01的相关文章

OSX学习01之更新头像

前不久在官网上守株待兔,买了一个官翻版865,其实最想买294的,可是米不足啊——所以,在同时下了865和293的订单,并纠结了一天后,确定了865,剩余的钱够一个Mac mini了,如果不买也可以日后买iMac. 相关的内容等会儿写另一帖,废话就不说了. 拆机后简单的设置下账户信息,但是没觉得账户图片好看,又没发现又什么方式设置账户图片,纠结了很久. 本机没有什么图片,这时候可以先把图片下载下来再说. 进入系统偏好设置-->用户与群组-->当前用户,点击现有头像-->最近使用-->

概率论快速学习01:计数

2014-05-15 22:02 by Jeff Li 前言 系列文章:[传送门] 马上快要期末考试了,为了学点什么.就准备这系列的博客,记录复习的成果. 正文-计数  概率 概率论研究随机事件.它源于赌徒的研究.即使是今天,概率论也常用于赌博.随机事件的结果是否只凭运气呢?高明的赌徒发现了赌博中的规律.尽管我无法预知事件的具体结果,但我可以了解每种结果出现的可能性.这是概率论的核心. "概率"到底是什么?这在数学上还有争议."频率派"认为概率是重复尝试多次,某种结

ThinkPhp学习01

原文:ThinkPhp学习01 一.ThinkPHP的介绍           MVC  M - Model 模型                工作:负责数据的操作  V - View  视图(模板)        工作:负责前台页面显示  C - Controller 控制器(模块) 工作:描述功能 框架二.ThinkPHP的获取            http://www.thinkphp.cn三.ThinkPHP核心文件介绍      ├─ThinkPHP.php     框架入口文件 

Scala学习01 环境安装

Scala是一门运行在jvm上的多范式语言,作为一个java程序员,使用Scala来写写程序,既不用担心会没有java强大的库支持,又能快速地写出简短强悍的代码,除此之外scala还为我们提供了强大的并发支持,Let's love it! 安装 下面来看看如何安装它(在此之前,确保已经安装好了jdk,我使用的jdk1.7). 我们可以通过Scala的官网(http://www.scala-lang.org/download/)来下载Scala.我使用的版本是2.11.1. 将安装包下载在本地之后

pyqt listview基础学习01

from decimal import * from PyQt4.QtGui import * from PyQt4.Qt import * from PyQt4.QtCore import * import sys class Example(QWidget): def __init__(self,args=None): super(Example, self).__init__(args) list_data=[1,2,3,4] lm=MyListMode(list_data,self) s

HTML坦克大战学习01

<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title></title> </head> <body> <canvas id="tankMap" width="400px" height="300px" style="background

HTML5 学习01

HTML的英语意思是:Hypertext Marked Language,即超文本标记语言,是一种用来制作超文本文档的简单标记语言. 所谓超文本,是因为它可以加入图片.声音.动画.影视等内容,事实上每一个 HTML 文档都是一种静态的网页文件,这个文件里面包含了 HTML 指令代码,这些指令代码并不是一种程序语言,它只是一种排版网页中资料显示位置的标记结构语言. ┣ 通过 HTML 可以表现出丰富多彩的设计风格: 图片调用:<IMG SRC="文件名"> 文字格式: <

Node.Js学习01: Module System 以及一些常用Node Module

Node.Js学习就按照这本书的流程来. 在第7章结束与第10章结束时分别自己出一个小项目练练手.Node.Js的入门学习计划是这样. 目录:, QQ:1045642972 欢迎来索书以及讨论Node.Js. Node.Js Demo Node.Js官网提供了一个最基本的Demo Code: var http = require('http'); http.createServer(function (req, res) { res.writeHead(200, {'Content-Type':

《批处理在提高Windows管理效率中神奇应用》学习01

<批处理在提高Windows管理效率中神奇应用>学习 ::1.3 ::echo. 显示空行 ::数值范围循环的for循环 @echo off echo Creating file0.txt ~ file99.txt echo. echo. :: for /l %%n in (0,1,99) /l表示for语句在指定的数值范围内循环.范围由in决定 ::in (0,1,99) 表示从0开始,步长为1,到99结束(包含99) for /l %%n in (0,1,99) do ( echo %%n