热门标签 | 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



推荐阅读
  • 本文将介绍如何编写一些有趣的VBScript脚本,这些脚本可以在朋友之间进行无害的恶作剧。通过简单的代码示例,帮助您了解VBScript的基本语法和功能。 ... [详细]
  • Explore a common issue encountered when implementing an OAuth 1.0a API, specifically the inability to encode null objects and how to resolve it. ... [详细]
  • 本文详细介绍了如何解决Uploadify插件在Internet Explorer(IE)9和10版本中遇到的点击失效及JQuery运行时错误问题。通过修改相关JavaScript代码,确保上传功能在不同浏览器环境中的一致性和稳定性。 ... [详细]
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • 本文介绍了Java并发库中的阻塞队列(BlockingQueue)及其典型应用场景。通过具体实例,展示了如何利用LinkedBlockingQueue实现线程间高效、安全的数据传递,并结合线程池和原子类优化性能。 ... [详细]
  • 深入解析Spring Cloud Ribbon负载均衡机制
    本文详细介绍了Spring Cloud中的Ribbon组件如何实现服务调用的负载均衡。通过分析其工作原理、源码结构及配置方式,帮助读者理解Ribbon在分布式系统中的重要作用。 ... [详细]
  • 本文深入探讨了 Java 中的 Serializable 接口,解释了其实现机制、用途及注意事项,帮助开发者更好地理解和使用序列化功能。 ... [详细]
  • 本文详细介绍了Akka中的BackoffSupervisor机制,探讨其在处理持久化失败和Actor重启时的应用。通过具体示例,展示了如何配置和使用BackoffSupervisor以实现更细粒度的异常处理。 ... [详细]
  • XNA 3.0 游戏编程:从 XML 文件加载数据
    本文介绍如何在 XNA 3.0 游戏项目中从 XML 文件加载数据。我们将探讨如何将 XML 数据序列化为二进制文件,并通过内容管道加载到游戏中。此外,还会涉及自定义类型读取器和写入器的实现。 ... [详细]
  • 深入解析Android自定义View面试题
    本文探讨了Android Launcher开发中自定义View的重要性,并通过一道经典的面试题,帮助开发者更好地理解自定义View的实现细节。文章不仅涵盖了基础知识,还提供了实际操作建议。 ... [详细]
  • Explore how Matterverse is redefining the metaverse experience, creating immersive and meaningful virtual environments that foster genuine connections and economic opportunities. ... [详细]
  • 本文基于刘洪波老师的《英文词根词缀精讲》,深入探讨了多个重要词根词缀的起源及其相关词汇,帮助读者更好地理解和记忆英语单词。 ... [详细]
  • 本文总结了在使用Ionic 5进行Android平台APK打包时遇到的问题,特别是针对QRScanner插件的改造。通过详细分析和提供具体的解决方法,帮助开发者顺利打包并优化应用性能。 ... [详细]
  • UNP 第9章:主机名与地址转换
    本章探讨了用于在主机名和数值地址之间进行转换的函数,如gethostbyname和gethostbyaddr。此外,还介绍了getservbyname和getservbyport函数,用于在服务器名和端口号之间进行转换。 ... [详细]
  • 本文详细介绍了如何构建一个高效的UI管理系统,集中处理UI页面的打开、关闭、层级管理和页面跳转等问题。通过UIManager统一管理外部切换逻辑,实现功能逻辑分散化和代码复用,支持多人协作开发。 ... [详细]
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社区 版权所有