文章目录

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取代

淘汰了,不多说了。

看代码:

  1. public static void main(String[] args) {
  2. Vector v=new Vector();
  3. //添加对象---String---二种方法都可以。
  4. v.add("abc1");
  5. v.addElement("abc2");
  6. v.add("abc3");
  7.  
  8. //使用迭代器遍历。访问对象
  9. for( Iterator it=v.iterator(); it.hasNext();)
  10. {
  11. System.out.println(it.next());
  12. }
  13.  
  14. }

  

(5)ArrayList

            数据结构--数组

            特点:访问速度快,查询较慢,和Vector相似,所以取代Vector

             用法:

           

  1. public static void main(String[] args) {
  2. List list=new ArrayList();
  3. list.add("abc1");
  4. list.add("abc2");
  5. list.add("abc3");
  6. Iterator it=list.iterator();
  7. while(it.hasNext()){
  8. Object obj=it.next();
  9. if(obj.equals("abc2"))
  10. list.add("abc0");//出现异常
    }
  11.  
  12. }

   上面出现异常,不能在迭代器遍历是为容器增加object。此时ListIterator作用出来,使用这个迭代器add(E e)就没有问题啦

  1. public static void main(String[] args) {
  2. List list=new ArrayList();
  3. list.add("abc1");
  4. list.add("abc2");
  5. list.add("abc3");
  6. ListIterator it=list.listIterator();
  7. while(it.hasNext()){
  8. Object obj=it.next();
  9. if(obj.equals("abc2"))
  10. it.add("abc0");
  11. }
  12.  
  13. System.out.println(list); //[abc1, abc2, abc0, abc3]
  14. }

  说白了就是重写了List里面的方法+自己的一些方法。

  (6)LinkedList

数据结构---列表

方法丰富:

getFirst();

get(index);

getLast();

removeFirst();

set(int index, E element); //替换

code: 使用LinkedList模拟栈-----先进先出

  1. package cn.com.List;
  2.  
  3. import java.util.LinkedList;
  4.  
  5. public class ListDemo {
  6.  
  7. public static void main(String[] args) {
  8. //使用LinkedList 模仿栈和队列.
  9. //创建栈,
  10.  
  11. myStack stack=new myStack();
  12. //进栈
  13. stack.add("abc1");
  14. stack.add("abc2");
  15. stack.add("abc3");
  16. //出栈
  17. while(stack.hasNext()){
  18. System.out.println(stack.get());
  19. }
  20.  
  21. System.out.println("____________________________");
  22.  
  23. //创建队列 和上面类似
    }
  24.  
  25. //栈
  26. public static class myStack{
  27. private LinkedList list=null;
  28. public myStack(){
  29. list=new LinkedList();
  30. }
  31. public Boolean add(Object o){
  32. list.addFirst(o);
  33. return true;
  34.  
  35. }
  36. public Object get(){
  37. return list.removeFirst();
  38. }
  39. public Boolean hasNext(){
  40. if(list.size()==0)return false;
  41. else return true;
  42. }
  43.  
  44. }
  45.  
  46. //队列
  47. public static class Queue{
  48. private LinkedList list=null;
  49. public Queue(){
  50. list=new LinkedList();
  51. }
  52. public Boolean add(Object obj){
  53. list.addFirst(obj);
  54. return true;
  55. }
  56. public Object get(){
  57. return list.removeLast();
  58. }
  59. public Boolean hasNext(){
  60. if(list.size()==0)return false;
  61. else return true;
  62. }
  63. }
  64.  
  65. }

  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. Hibernate入门笔记

    相关基础概念请从其它教材简单了解,这里仅记录下第一个Hibernate程序的实现步骤. 环境说明: java开发工具:eclipse MARS.2 Release(4.5.2) hibernate版本 ...

  2. background-attachment属性进阶

    前提是定义了background-image属性,然后用background-attachment来指明背景图的位置是固定于视口的,还是随着包含块移动的.可简单理解为定义背景图片随滚动轴的移动方式. ...

  3. ELK日志系统:Filebeat使用及Kibana如何设置登录认证

    根据elastic上的说法: Filebeat is a lightweight, open source shipper for log file data. As the next-generat ...

  4. [LeetCode] Second Highest Salary 第二高薪水

    Write a SQL query to get the second highest salary from the Employee table. +----+--------+ | Id | S ...

  5. 45分钟带你入门Linux(附:笔者在工作室开讨论班录制的视频讲解)

    第一部分    熟悉Linux基本操作 一.初识Linux 1.Linux特点 ◊  开放性 ◊  多用户 ◊  多任务 ◊  良好的用户界面 ◊  设备独立性 ◊  丰富的网络功能 ◊  可靠的系统 ...

  6. PHP 做文件校验,MD5,CRC32,SHA等

    函数 hash_file(): 使用给定文件的内容生成哈希值 说明 string hash_file ( string $algo , string $filename [, bool $raw_ou ...

  7. 分享10条PHP性能优化的小技巧,帮助你更好的用PHP开发:

    1. foreach效率更高,尽量用foreach代替while和for循环. 2. 循环内部不要声明变量,尤其是对象这样的变量. 3. 在多重嵌套循环中,如有可能,应当将最长的循环放在内层,最短循环 ...

  8. Beta版本冲刺第四天

    Aruba 408 409 410 428 429 431 完成任务: 更改了一些边界模糊的图标 完善分享功能 立会照片: 燃尽图: commit: coding.net: https://codin ...

  9. SpringCloud: 服务发现

    p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px "Helvetica Neue"; color: #e4af0a } sp ...

  10. 利用django创建一个投票网站(五)

    创建你的第一个 Django 项目, 第五部分 这一篇从第四部分(en)结尾的地方继续讲起.我们在前几章成功的构建了一个在线投票应用,在这一部分里我们将其创建一些自动化测试. 自动化测试简介 自动化测 ...