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

             

       

        

     

时间: 2024-10-24 14:07:35

java合集框架第一天的相关文章

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

继续上一篇浅谈java类集框架和数据结构(1)的内容 上一篇博文简介了java类集框架几大常见集合框架,这一篇博文主要分析一些接口特性以及性能优化. 一:List接口 List是最常见的数据结构了,主要有最重要的三种实现:ArrayList,Vector,LinkedList,三种List均来自AbstracList的实现,而AbstracList直接实现了List接口,并拓展自AbstractCollection. 在三种实现中,ArrayList和Vector使用了数组实现,可以认为这两个是

深入理解java合集之框架总览

综述 Java集合就是一个容器.面向对象语言对事物的体现都是以对象的形式存在,所以为了方便对多个对象的操作,就对对象进行存储,集合就是存储对象最常用的一种方式.集合只用于存储对象,集合长度是可变的,集合可以存储不同类型的对象.如果往集合里存放基本数据类型,在存取过程中会有个自动装箱和拆箱. 因为容器中数据结构不同,容器有很多种.不断地将共性功能向上抽取,形成了集合体系,称之为集合框架. 集合框架的顶层就称之为Collection接口.所有的集合类都位于java.util包下,查阅API可以得到如

java类集框架

一.系统简述: 1.集合框架总体结构    Java中集合类定义主要是java.util.*包下面,常用的集合在系统中定义了三大接口,这三类的区别是: java.util.Set接口及其子类,set提供的是一个无序的集合: java.util.List接口及其子类,List提供的是一个有序的集合: java.util.Map接口及其子类,Map提供了一个映射(对应)关系的集合数据结构: 另外,在JDK5中新增了Queue(队列)接口及其子类,提供了基于队列的集合体系.每种集合,都可以理解为用来在

Java类集框架之LinkedList源码剖析

LinkedList LinkedList基于双向循环链表实现.也可以被当做堆栈,队列或双端队列进行操作.非线程安全.下面直接贴ArrayList的Java实现(只贴了部分代码),来源JDK1.8.0_25/src.zip. /** * ****双向链表对应的数据结构********* * 包含:节点值item * 前驱 pre * 后继next * @param <E> */ private static class Node<E> { E item; Node<E>

Java类集框架之HashMap(JDK1.8)源码剖析

这几天学习了HashMap的底层实现,发现关于HashMap实现的博客还是很多的,但几乎都是JDK1.6版本的,而我的JDK版本是1.8.0_25,对比之下,发现Hashmap的实现变动较大.这篇博客断断续续写了一天,理解不当之处,欢迎指正. 在JDK1.6中,HashMap采用位桶+链表实现,即使用链表处理冲突,同一hash值的链表都存储在一个链表里.但是当位于一个桶中的元素较多,即hash值相等的元素较多时,通过key值依次查找的效率较低.而JDK1.8中,HashMap采用位桶+链表+红黑

Java类集框架之ArrayList源码剖析

ArrayList 基于数组实现,本质上是对象引用的一个变长数组,能够动态的增加或减小其大小. 不是线程安全的,只能用在单线程环境下.多线程环境下可以考虑用Collection.synchronizedList(List l)函数返回一个线程安全的ArrayList类,也可以使用concurrent并发包下的 CopyOnWriteArrayList类 下面直接贴ArrayList的Java实现,来源JDK1.8.0_25/src.zip. public class ArrayList<E>

20.2合集

要点提示:Collection接口为线性表.向量.栈.队列,优先队列以及集合定义了共同的操作. java合集框架支持以下两种类型的容器: 一种是为了存储一个元素 合集,简称为合集(collection): 另一种是为了存储键值对,称为映射表(map) 映射表是一个用于使用一个键(key)快速搜索一个元素的高效数据结构. Set用于存储一组不重复的元素 List用于存储一个有序元素合集 Stack用于存储采用后进先出方式处理的对象 Queue用于存储采用先进先出方式处理的对象 Priority Q

三、Java基础知识要点合集

1.数据类型 Java的数据类型分为基本数据类型和引用数据类型. a, 基本数据类型包括:byte, boolean, char, short, int, long, float, double; b, 每个基本数据类型都有相应的引用类型,比如int  ->  Integer,char -> character. c, 查询不同类型数据的范围,方法之一是可以用基本类型对应的引用类型.比如,"int i = Integer.Size; "(i表示int型数据所占的位(bit)

【Java并发编程】并发编程大合集

转载自:http://blog.csdn.net/ns_code/article/details/17539599 为了方便各位网友学习以及方便自己复习之用,将Java并发编程系列内容系列内容按照由浅入深的学习顺序总结如下,点击相应的标题即可跳转到对应的文章    [Java并发编程]实现多线程的两种方法    [Java并发编程]线程的中断    [Java并发编程]正确挂起.恢复.终止线程    [Java并发编程]守护线程和线程阻塞    [Java并发编程]Volatile关键字(上)