热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

学习笔记java集合(三)

向量类Vector和栈类Statck类和栈类Statckjava框架集合是java2中引入的。java2之前的版本也支持一些数据结构,其中就有向量类Victor与栈类

 

向量类 Vector 和栈类Statck类 和栈类 Statck

         java 框架集合是java 2中引入的。java 2 之前的版本也支持一些数据结构,其中就有向量类 Victor 与栈类 Statck。为了适应java 集合框架 ,java 2 对这些类进行重新设计,但是为了向后兼容,保留了他们所有的旧的方法。除了包含用于同步的用于访问和修改向量的同步方法之外,Vector与ArrayList类是一样的。同步方法用于防止两个或多个线程同事访问某个向量是引起数据损坏。对于许多不需要同步访问的程序来说,使用ArrayLsit 比使用Vector 效率更高。

      Vector 类保留了旧的方法的同时 实现了List接口。

 

 

java.util.Vector extends java.utile.List
Vector()创建一个i额出事融来那个为10的默认空向量
Vector&#xff08;c:Collectong<&#xff1f; extends E>&#xff09;创建一个来自现有集合的向量
Vector&#xff08;initialCapacity&#xff1a;int&#xff09;创建一个指定初始容量的向量
Vector&#xff08;initialCapacity&#xff1a;int&#xff0c;capacityIncr&#xff1a;int&#xff09;创建一个指定初始容量和增量的向量
addElement(o&#xff1a;E&#xff09;&#xff1a;void在向量的末尾追加一个元素
capacity&#xff08;&#xff09;&#xff1b;int返回向量的当前容量
copyInto&#xff08;anArray&#xff1a;Object【】&#xff09;&#xff1a;void将向量的元素复制给一个数组
elementAt&#xff08;index&#xff1a;int&#xff09;&#xff1a;E返回指定下标出的对象
elements&#xff08;&#xff09;&#xff1a;Enumeration返回向量类的枚举
ensureCapacity&#xff08;&#xff09;&#xff1a;void增加向量的容量
firstElement&#xff08;&#xff09;&#xff1a;E返回向量的第一个元素
insertElementAt&#xff08;o:E&#xff0c;index&#xff1a;int&#xff09;&#xff1a;void将o插入向量的指定下标处
lastElement&#xff08;&#xff09;&#xff1a;E返回向量的最后一个元素
removeAllElements&#xff08;&#xff09;&#xff1a;void删除向量中的所有元素
removeElement(o:Object):boolean删除向量中的所有元素
removeelementAt&#xff08;index:int&#xff09;&#xff1a;void删除指定小标处的元素
setElementAt(o:Object,index:int)在指定下标出设置一个新元素
setSize&#xff08;newSize&#xff1a;int&#xff09;&#xff1a;void设置向量的新尺寸
trimToSize&#xff08;&#xff09;&#xff1a;viod将向量的容量缩小到他的尺寸

 

 

 

 

       Vector类中的大多数附加的方法都类似于List接口中的方法&#xff0c;这写方法实在java集合框架之前引入的。 Statck类是Vector类的扩展类。

 

 

java.util.statck extends java.util.Vector
Stack()创建一个空栈
empty&#xff08;&#xff09;&#xff1a;boolean如果栈为空则返回true
peek&#xff08;&#xff09;&#xff1a;E返回栈顶的元素
pop&#xff08;&#xff09;&#xff1a;E返回并删除栈顶的元素
push&#xff08;o:E&#xff09;&#xff1a;E在栈顶增加一个新元素
search&#xff08;o:Object&#xff09;&#xff1a;int返回战中指定元素的位置
  


 

 

 

   列队和优先列队

          列队是一种先进先出的数据结构&#xff0c;元素被追加到列队末尾&#xff0c;然后在列头删除。优先列队中&#xff0c;元素被赋予优先权限&#xff0c;当访问元素时&#xff0c;拥有最高权限优先级元素首先被删除。Queue接口扩展了 java.uitl.collection接口.

 

 

java.util.Queue extends java.util.Collection
offer(element : E):boolean向列对中插入一个元素
poll() : E获取并删除列头&#xff0c;如果列队为空则返回 null
remove&#xff08;&#xff09;&#xff1a;E获取并删除列头&#xff0c;如果列队为空 则抛出异常
peek&#xff08;&#xff09;返回但是不删除列头列头&#xff0c;如果列队为空返回null
element&#xff08;&#xff09;&#xff1a;E返回但是不删除列头&#xff0c;如果列队为空抛出异常

 

双端列队Deque和链表LinkedList

         LinkedList 实现了Deque接口&#xff0c;因此可以使用LinkedList创建一个列队。Deque支持两端插入和删除元素。Deque扩展了Queue接口。提供了两端删除、和插入的方法。addFirst&#xff08;e&#xff09;/removeFirst(e)、addLast&#xff08;e)、removeLast&#xff08;e&#xff09;、getFist( ) 和 getLast( ) 都是被定义在Deque接口中。

package LianXi;
import java.util.Queue;
import java.util.LinkedList;
public class QueueTest
{public static void main(String[] args) {Queue testQueue &#61; new LinkedList();testQueue.offer("aaaa");testQueue.offer("bbbb");testQueue.offer("cccc");testQueue.offer("dddd");testQueue.offer("eeee");while(testQueue.size()>0){System.out.println(testQueue.poll());}}
}


输出顺序就是添加进入列队的顺序

aaaa
bbbb
cccc
dddd
eeee

 

        PriorityQueue实现一个优先列队。默认情况下&#xff0c;优先列队以Comparable 接口以自然顺序排序&#xff0c;拥有最小数值的元素拥有最高优先级&#xff0c;因此最先从列队中删除。如果几个元素具有相同的优先级最高优先级&#xff0c;其中任意一个都可以从列队中删除。也可以使用构造方法 priorityQueue&#xff08;initialCapcity &#xff1a;int&#xff0c;c&#xff1a;Comparator) 中的Comparator 来对元素排序。

     

 

java.utile.PriorityQueue extends java.util.Queue
PriorityQueue()创建一个初始容量为11的默认优先队列
PriorityQueue&#xff08;initialCapcity&#xff1a;int&#xff09;创建一个指定初始容量的优先列队。

PriorityQueue&#xff08;c&#xff1a;Collection)

从现有结合创建一个列队。
PriorityQueue&#xff08;initialCapcity&#xff1a;int&#xff0c;c&#xff1a;Comparator&#xff09;创建一个带指定初始容量和比较器的优先列队

 

import java.util.PriorityQueue;
public class QueueTest
{public static void main(String[] args) {PriorityQueue testQueue &#61; new PriorityQueue();testQueue.offer("aaaa");testQueue.offer("cccc");testQueue.offer("cccc");testQueue.offer("dddd");testQueue.offer("bbbb");testQueue.offer("eeee");while(testQueue.size()>0){System.out.println(testQueue.poll());}System.out.println("&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;帶倒序比較器的優先列隊&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;");PriorityQueue testQueue2 &#61; new PriorityQueue(5,java.util.Collections.reverseOrder());testQueue2.offer("eeee");testQueue2.offer("aaaa");testQueue2.offer("cccc");testQueue2.offer("dddd");testQueue2.offer("cccc");testQueue2.offer("bbbb");while(testQueue2.size()>0){System.out.println(testQueue2.poll());}}
}


图 Map

        图是一种依照键值存储元素的容器。键值类似下标&#xff0c;在List中下标是整数&#xff0c;而在Map中键值可以使任意类型的对象。图中不能有重复的键值&#xff0c;每个键值对应一个值&#xff0c;一个键值与它的对应的值构成一个条目&#xff0c;真正在图中存储的是这个条目。

      图的类型有三种&#xff1a;散列图 HashMap、链式散列图 LinkedHashMap 和树形图 TreeMap。这些图的通用特性都定义在Map接口中。

 

Map接口提供了查询、更新和获取结合的值和集合的键值的方法。

 

 

     

       AbstractMap是一个便利类&#xff0c;它实现了Map接口中除了entrySet&#xff08;&#xff09;方法之外的所有方法。

       SortedMap接口扩展Map接口、并保持映射以键值的升序排列。它还有附加的方法firstKey&#xff08;&#xff09; 和 lastKey&#xff08;&#xff09;以返回最低键值和最高键值、headMap&#xff08;toKeyI)返回键值小于toKey的那部分图&#xff0c;tailMap&#xff08;fromKey&#xff09; 返回键值大于或者等于framKey的那部分图。

      HashMap  、LinkedHashMap、TreeMap 是Map接口的三个具体实现。

     对于&#xff0c;定位、插入、以及删除一个映射HashMap是最高效的。

     LinkedHashMap类用链表实现类扩展HashMap类&#xff0c;它支持图中条目的排序。HashMap类中的条目是没有顺序的&#xff0c;但是LinkedHashMap中&#xff0c;元素既可以按照插入图的顺序排序&#xff0c;也可以按照反问顺序排序。无参构造函数是以插入顺序创建链表的&#xff0c;要按访问顺序创建 应该私用 LinkedHashMap&#xff08;initialCapcity&#xff0c;loadFactor&#xff0c;true&#xff09;。

   

package LianXi;
import java.util.*;public class LinkedHashMapTest
{public static void main(String[] args) {LinkedHashMap insertSrotMap &#61; new LinkedHashMap();insertSrotMap.put("aaaaK","aaaaV");insertSrotMap.put("ccccK","ccccV");insertSrotMap.put("bbbbK","bbbbV");insertSrotMap.put("ddddK","ddddV");eachMap(insertSrotMap.entrySet());System.out.println("&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;根据访问顺序排序&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;");LinkedHashMap vSrotMap &#61; new LinkedHashMap(3,0.75f,true);vSrotMap.putAll(insertSrotMap);//根据数组中的顺序访问String[] keys &#61; {"aaaaK","bbbbK" ,"ccccK","ddddK"};for( String key :keys){System.out.println(key&#43; " : " &#43; vSrotMap.get(key));}eachMap(vSrotMap.entrySet());}private static void eachMap(Set> set){for(Map.Entry entry :set){System.out.println(entry.getKey() &#43; " : " &#43; entry.getValue());}}
}


        TreeMap在便利排好顺序的键值是非常高效。键值可以使用comparable接口或者Comparator接口来排序。如果使用它的无参构造方法创建一个TreeMap对


 

 

作者&#xff1a;duanmengchao 发表于2012-4-18 12:53:40 原文链接
阅读&#xff1a;16 评论&#xff1a;0 查看评论

 

转:https://www.cnblogs.com/duanjie/archive/2012/04/18/2489171.html



推荐阅读
  • Java太阳系小游戏分析和源码详解
    本文介绍了一个基于Java的太阳系小游戏的分析和源码详解。通过对面向对象的知识的学习和实践,作者实现了太阳系各行星绕太阳转的效果。文章详细介绍了游戏的设计思路和源码结构,包括工具类、常量、图片加载、面板等。通过这个小游戏的制作,读者可以巩固和应用所学的知识,如类的继承、方法的重载与重写、多态和封装等。 ... [详细]
  • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • Java容器中的compareto方法排序原理解析
    本文从源码解析Java容器中的compareto方法的排序原理,讲解了在使用数组存储数据时的限制以及存储效率的问题。同时提到了Redis的五大数据结构和list、set等知识点,回忆了作者大学时代的Java学习经历。文章以作者做的思维导图作为目录,展示了整个讲解过程。 ... [详细]
  • 本文介绍了OC学习笔记中的@property和@synthesize,包括属性的定义和合成的使用方法。通过示例代码详细讲解了@property和@synthesize的作用和用法。 ... [详细]
  • 使用Ubuntu中的Python获取浏览器历史记录原文: ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • 本文详细介绍了Java中vector的使用方法和相关知识,包括vector类的功能、构造方法和使用注意事项。通过使用vector类,可以方便地实现动态数组的功能,并且可以随意插入不同类型的对象,进行查找、插入和删除操作。这篇文章对于需要频繁进行查找、插入和删除操作的情况下,使用vector类是一个很好的选择。 ... [详细]
  • Java学习笔记之面向对象编程(OOP)
    本文介绍了Java学习笔记中的面向对象编程(OOP)内容,包括OOP的三大特性(封装、继承、多态)和五大原则(单一职责原则、开放封闭原则、里式替换原则、依赖倒置原则)。通过学习OOP,可以提高代码复用性、拓展性和安全性。 ... [详细]
  • Java在运行已编译完成的类时,是通过java虚拟机来装载和执行的,java虚拟机通过操作系统命令JAVA_HOMEbinjava–option来启 ... [详细]
  • 本文介绍了Python爬虫技术基础篇面向对象高级编程(中)中的多重继承概念。通过继承,子类可以扩展父类的功能。文章以动物类层次的设计为例,讨论了按照不同分类方式设计类层次的复杂性和多重继承的优势。最后给出了哺乳动物和鸟类的设计示例,以及能跑、能飞、宠物类和非宠物类的增加对类数量的影响。 ... [详细]
  • 本文介绍了如何在给定的有序字符序列中插入新字符,并保持序列的有序性。通过示例代码演示了插入过程,以及插入后的字符序列。 ... [详细]
  • 关键词:Golang, Cookie, 跟踪位置, net/http/cookiejar, package main, golang.org/x/net/publicsuffix, io/ioutil, log, net/http, net/http/cookiejar ... [详细]
  • 个人学习使用:谨慎参考1Client类importcom.thoughtworks.gauge.Step;importcom.thoughtworks.gauge.T ... [详细]
  • [大整数乘法] java代码实现
    本文介绍了使用java代码实现大整数乘法的过程,同时也涉及到大整数加法和大整数减法的计算方法。通过分治算法来提高计算效率,并对算法的时间复杂度进行了研究。详细代码实现请参考文章链接。 ... [详细]
author-avatar
mobiledu2502885807
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有