java合集框架第一天
|
文章目录 1 collection接口 2 list接口 3 Iterator 4 Vertor 5 ArrayList 6 LinkedList |
主体部分:
(1)collection
Java中有数字包装类(Inteager),字符包装类(String) . 其实也有对象的包装类----用来装对象的(通常是一类对象).这样做的好处是:使用方法和属性便于管理对象。
这种包装类叫做容器。 就想我们的水杯一样,结果都有一定的差异。同样容器由于数据结构的不同,也有很多类型。他们的父类是collection接口,里面有不少方法。
这些是容器共有的方法,比如:add(),remove(); collection又可以分为二大类。该文章介绍list
collection
|_list
|_set
容器的特点
(1)只能存储对象,不能是基本数据类型
(2)长度不是固定的---比数组灵活
(3)都有自己的数据结构
(2)List:
表面上看"列表", 它也是一个接口,他的子类都是List系类的容器(集合)
List 接口方法和collection差不多,多出来的就是list体系的特点:通过index来访问列表。比如:add(int index,Object o);remove(int index);//ect
list----|_Vector
|_ArrayList
|_LinkedList
|_其他
(3)Iterator-----迭代器
作用:用来访问集合中的对象,也是一个接口。里面只有3个方法,很重要。hasNext(),next(),remove();
注意这句话:每一个容器都有一个实现迭代器的内部类。而且控制通过iterator()获取实体对象。
ListIterator 是Iterator子接口,同样的道理,这里多出来的也就是通过index访问元素的方法。可以crud,效果很猛。
待会重点说明怎么使用。
(4) Vector
说了那么多接口,终于来个具体的容器。
Vector数据结构----数组类型----访问速度较慢(crud)---被ArrayList取代
淘汰了,不多说了。
看代码:
public static void main(String[] args) {
Vector v=new Vector();
//添加对象---String---二种方法都可以。
v.add("abc1");
v.addElement("abc2");
v.add("abc3");
//使用迭代器遍历。访问对象
for( Iterator it=v.iterator(); it.hasNext();)
{
System.out.println(it.next());
}
}
(5)ArrayList
数据结构--数组
特点:访问速度快,查询较慢,和Vector相似,所以取代Vector
用法:
public static void main(String[] args) {
List list=new ArrayList();
list.add("abc1");
list.add("abc2");
list.add("abc3");
Iterator it=list.iterator();
while(it.hasNext()){
Object obj=it.next();
if(obj.equals("abc2"))
list.add("abc0");//出现异常
}
}
上面出现异常,不能在迭代器遍历是为容器增加object。此时ListIterator作用出来,使用这个迭代器add(E e)就没有问题啦
public static void main(String[] args) {
List list=new ArrayList();
list.add("abc1");
list.add("abc2");
list.add("abc3");
ListIterator it=list.listIterator();
while(it.hasNext()){
Object obj=it.next();
if(obj.equals("abc2"))
it.add("abc0");
}
System.out.println(list); //[abc1, abc2, abc0, abc3]
}
说白了就是重写了List里面的方法+自己的一些方法。
(6)LinkedList
数据结构---列表
方法丰富:
getFirst();
get(index);
getLast();
removeFirst();
set(int index, E element); //替换
等
code: 使用LinkedList模拟栈-----先进先出
package cn.com.List;
import java.util.LinkedList;
public class ListDemo {
public static void main(String[] args) {
//使用LinkedList 模仿栈和队列.
//创建栈,
myStack stack=new myStack();
//进栈
stack.add("abc1");
stack.add("abc2");
stack.add("abc3");
//出栈
while(stack.hasNext()){
System.out.println(stack.get());
}
System.out.println("____________________________");
//创建队列 和上面类似
}
//栈
public static class myStack{
private LinkedList list=null;
public myStack(){
list=new LinkedList();
}
public Boolean add(Object o){
list.addFirst(o);
return true;
}
public Object get(){
return list.removeFirst();
}
public Boolean hasNext(){
if(list.size()==0)return false;
else return true;
}
}
//队列
public static class Queue{
private LinkedList list=null;
public Queue(){
list=new LinkedList();
}
public Boolean add(Object obj){
list.addFirst(obj);
return true;
}
public Object get(){
return list.removeLast();
}
public Boolean hasNext(){
if(list.size()==0)return false;
else return true;
}
}
}
list系类介绍中三个主要的成员,下节说说set系类
注: 简单总结,更多函数看看 api
java合集框架第一天的更多相关文章
- 浅谈java类集框架和数据结构(1)
在另外一篇博客我简单介绍了java类集框架相关代码和理论. 这一篇博客我主要分析一下各个类集框架的原理以及源码分析. 一:先谈谈LinkedList 这是LinkedList源码的开头,我们能看到几点 ...
- 浅谈java类集框架和数据结构(2)
继续上一篇浅谈java类集框架和数据结构(1)的内容 上一篇博文简介了java类集框架几大常见集合框架,这一篇博文主要分析一些接口特性以及性能优化. 一:List接口 List是最常见的数据结构了,主 ...
- Java类集框架详细汇总-底层分析
前言: Java的类集框架比较多,也十分重要,在这里给出图解,可以理解为相应的继承关系,也可以当作重要知识点回顾: Collection集合接口 继承自:Iterable public interfa ...
- 专题笔记--Java 类集框架
Java 类集框架 1. Java类集框架产生的原因 在基础的应用中,我们可以通过数组来保存一组对象或者基本数据,但数组的大小是不可更改的,因此出于灵活性的考虑和对空间价值的担忧,我们可以使用链表来实 ...
- Java类集框架——List接口
学习目标 掌握List接口与Collection接口的关系. 掌握List接口的常用子类:ArrayList.Vector. 掌握ArrayList与Vector类的区别. Collection ...
- java类集框架(ArrayList,LinkedList,Vector区别)
主要分两个接口:collection和Map 主要分三类:集合(set).列表(List).映射(Map)1.集合:没有重复对象,没有特定排序方式2.列表:对象按索引位置排序,可以有重复对象3.映射: ...
- java类集框架图(google找的,备个份)
- java:类集框架conllection接口list,set
类集中提供了以下几种接口: 1.单值操作接口:conllection,List,Set list和set是conllection接口的子接口 2.一对值的操作接口:Map 3.排序的操作接口:Sort ...
- 大猪蹄子队 Scrum meeting 合集
大猪蹄子队 Scrum meeting 合集 18-10-29 第一天 http://note.youdao.com/noteshare?id=79ce5a89f85995ef68deae14e538 ...
随机推荐
- x01.TodoList:Asp.Net 5 初探
ASP.NET 5 是比较新的,除了汤姆的博文,学习资料并不多.而学习没有例子上手,是比较痛苦的. 1.运行 vs2015,新建项目,选择 Asp.Net 5 WebApp 模板,默认运行即可.对照汤 ...
- linux shell字符串内置的常用操作(获取长度、查找、替换)
在编写shell程序时,经常会涉及到字符串相关操作.有许多命令语句,如awk,sed都能够做字符串各种操作. 事实上shell内置一系列操作符号,能够达到相似效果,使用内部操作符会省略启动外部程序等时 ...
- cookie 跨域访问的解决方案
Cookie 同域单点登录 最近在做一个单点登录的系统整合项目,之前我们使用控件实现单点登录(以后可以介绍一下).但现在为了满足客户需求,在不使用控件情况下实现单点登录,先来介绍一下单点登录. ...
- LZ77.py
import math from bitarray import bitarray class LZ77Compressor: """ A simplified impl ...
- url转码
var target = encodeURI('我测试'); //--> target = %E6%88%91%E6%B5%8B%E8%AF%95 var afterConvert = deco ...
- [LeetCode] Maximum Depth of Binary Tree 二叉树的最大深度
Given a binary tree, find its maximum depth. The maximum depth is the number of nodes along the long ...
- 用Tensorflow让神经网络自动创造音乐
#————————————————————————本文禁止转载,禁止用于各类讲座及ppt中,违者必究————————————————————————# 前几天看到一个有意思的分享,大意是讲如何用Ten ...
- MVC系列——MVC源码学习:打造自己的MVC框架(一:核心原理)
前言:最近一段时间在学习MVC源码,说实话,研读源码真是一个痛苦的过程,好多晦涩的语法搞得人晕晕乎乎.这两天算是理解了一小部分,这里先记录下来,也给需要的园友一个参考,奈何博主技术有限,如有理解不妥之 ...
- vue-resource初体验
这个插件是用于http请求的,类似于jquery的ajax函数,支持多种http方法和jsonp. 下面是resource支持的http方法. get: {method: 'GET'},save: { ...
- electron 入门小白贴
electron 入门小白贴 electron demo 跑起来! 毕设准备是做个 跨平台的做题的客户端,打算用 electron 来弄. 然而今天折腾了半天才终于吧demo给跑起来了.经历了许多的问 ...