文章目录

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合集框架第一天的更多相关文章

  1. 浅谈java类集框架和数据结构(1)

    在另外一篇博客我简单介绍了java类集框架相关代码和理论. 这一篇博客我主要分析一下各个类集框架的原理以及源码分析. 一:先谈谈LinkedList 这是LinkedList源码的开头,我们能看到几点 ...

  2. 浅谈java类集框架和数据结构(2)

    继续上一篇浅谈java类集框架和数据结构(1)的内容 上一篇博文简介了java类集框架几大常见集合框架,这一篇博文主要分析一些接口特性以及性能优化. 一:List接口 List是最常见的数据结构了,主 ...

  3. Java类集框架详细汇总-底层分析

    前言: Java的类集框架比较多,也十分重要,在这里给出图解,可以理解为相应的继承关系,也可以当作重要知识点回顾: Collection集合接口 继承自:Iterable public interfa ...

  4. 专题笔记--Java 类集框架

    Java 类集框架 1. Java类集框架产生的原因 在基础的应用中,我们可以通过数组来保存一组对象或者基本数据,但数组的大小是不可更改的,因此出于灵活性的考虑和对空间价值的担忧,我们可以使用链表来实 ...

  5. Java类集框架——List接口

    学习目标 掌握List接口与Collection接口的关系. 掌握List接口的常用子类:ArrayList.Vector. 掌握ArrayList与Vector类的区别.    Collection ...

  6. java类集框架(ArrayList,LinkedList,Vector区别)

    主要分两个接口:collection和Map 主要分三类:集合(set).列表(List).映射(Map)1.集合:没有重复对象,没有特定排序方式2.列表:对象按索引位置排序,可以有重复对象3.映射: ...

  7. java类集框架图(google找的,备个份)

  8. java:类集框架conllection接口list,set

    类集中提供了以下几种接口: 1.单值操作接口:conllection,List,Set list和set是conllection接口的子接口 2.一对值的操作接口:Map 3.排序的操作接口:Sort ...

  9. 大猪蹄子队 Scrum meeting 合集

    大猪蹄子队 Scrum meeting 合集 18-10-29 第一天 http://note.youdao.com/noteshare?id=79ce5a89f85995ef68deae14e538 ...

随机推荐

  1. python list dict 去重的两种方式

    def dedupe(items, key=None): seen = set() for item in items: val = item if key is None else key(item ...

  2. 关闭selinux

    1.查看SELinux状态:getenforce Enforcing(启动) disable(禁用) 1.禁用SELinux(重启后依然生效) 修改 vi /etc/sysconfig/selinux ...

  3. [转]Asp.Net Core 简单的使用加密的Cookie保存用户状态

    本文转自:http://www.cnblogs.com/Joes/p/6023820.html 在以前的Asp.Net中可以用 FormsAuthentication 类的一系列方法来使用加密的Coo ...

  4. java.lang.String.getBytes(String charsetName)方法实例

    java.lang.String.getBytes(String charsetName) 方法编码将此String使用指定的字符集的字节序列,并将结果存储到一个新的字节数组. 声明 以下是java. ...

  5. Linux下的C Socket编程 -- 简介与client端的处理

    Linux下的C Socket编程(一) 介绍 Socket是进程间通信的方式之一,是进程间的通信.这里说的进程并不一定是在同一台机器上也有可能是通过网络连接的不同机器上.只要他们之间建立起了sock ...

  6. Batis-iBatis基本操作(增删改查)

    Batis-iBatis基本操作(增删改查) 时间 2014-04-10 17:55:20  CSDN博客 原文  http://blog.csdn.net/mazhaojuan/article/de ...

  7. 实体类和DataTable的转换

    引子 最近在项目中在数据库查询的时间,总是要用到数据表到实体类对象列表的转化,自己封装了一个转换的方法,用起来还比较方便,记下来,以后可以重复使用,原理就主要是利用反射,当然有更好的ORM框架可以实现 ...

  8. BAS/BRAS/RADIUS简介

    标签: java radius协议   linux radius认证服务器   转自: http://blog.csdn.net/sun93732/article/details/5999274 由R ...

  9. Socket通信综合示例

    1用户注册客户单选择'用户注册',提示要输入用户名,密码,确认密码,校验成功后将用户信息保存到数据库,并提示数据库注册成功,请登录2用户登录客户端选择'登录以后'后,提示输入用户名和密码,验证成功则提 ...

  10. asp.net webservice返回json问题

    使用jQuery $.ajax方法请求webservice 一.方法返回值为string,将json格式的字符串返回 设置contentType为"application/json;char ...