/*
一些常用的集合类的方法的用法演示。
JAVA容器的两种基本类型:
区别在于每个位置保存的元素个数
Collection:一组独立的元素通常都 要服从某种规则。List按对象进入的顺序保存对象,不做排序和编辑;而set则是不能有重复 的元素,即每个对象只接受一次,并有自己的内部的排序算法。
Map:一组成对的“键值对”对象,get()时一般返回Entry -->是一种专门针对Hash容器的数据类型,用来保存键值对。
*/
import java.util.*;
public class JAVAContainer {
/*介绍集合之前先看一看迭代器:
简化对集合的操作,主要功能是遍历并选择集合中的对象,其中有三个最要的方法:
1.hasNext() 返回布尔值 看集合中还有没有元素
2.next() 返回下一个元素 返回的是O的所一定要强转一下
3.remove() 元素删除
接口 Iterator:
构建一个Iterator迭代器 -->Iterator iterator=所要进行迭代的集合对象.iterator();
接口 Enumeration<E>: 注意=====Enumeration已经不是主流,Iterator是它的下一代替代品
构建一个Enumeration迭代器-->Enumeration enumeration=所要进行迭代的集合对象.elements()
*/
public static void main(String[] args) throws Exception{
// ArrayList: 允许包括 null 在内的所有元素,此类是线程不同步的
{
ArrayList arraylist=new ArrayList();
arraylist.add(0,"end"); //指定索引加入值,需注意的是,如果现有2个值,我加入索引为5的那么就会出现异常,即不能越位
for(int i=0;i<2;i++){
arraylist.add(i,String.valueOf(i)); //将指定元素加入指定位置
}
System.out.println("ArrayList:");
for(int i=0;i<arraylist.size();i++){
System.out.print(arraylist.get(i)+";"); //get(int i)取出指定位置的元素
}
arraylist.add("0");//直接加入值到ArrayList的最后
arraylist.add("0");
// arraylist.lastIndexOf("0") 返回指定的对象在列表中最后一次出现的位置索引
System.out.print("\nArrayList\'s lastIndexOf(\"0\") is "+arraylist.lastIndexOf("0"));
}
// Collections: 此类完全由在 collection 上进行操作或返回 collection 的静态方法组成
{
String []array=new String[]{"a","b","c"};
List list=Arrays.asList(array); // aslist(Object []) 通过一个已有数组,构造一个List对象
Collections.fill(list,"Fill"); //用Fill填充全部元素 使用指定元素替换指定列表中的所有元素。
System.out.println("\nCollections:");
for(int i=0;i<list.size();i++){
System.out.print(list.get(i)+";");
}
array=new String[]{"1","2","3"};
List list2=Arrays.asList(array);
Collections.copy(list,list2); //拷贝list2的数据进list
System.out.println("\n"+list);
Collections.swap(list,2,1); //调换索引为1和2的元素的位置 在指定列表的指定位置处交换元素
System.out.println(list);
}
// HashMap 一个速度最快的容器,此类不保证映射的顺序,特别是它不保证该顺序恒久不变,不是线程同步
{
HashMap hashmap=new HashMap();
hashmap.put("0","c"); //存放对象用put方法 记住所存的一定是键值对
hashmap.put("1","a");
hashmap.put("2","b");
hashmap.put("3","a");
System.out.println("HashMap:");
System.out.println(hashmap); //该容器有其内部的排序方式 事实上是依据哈希算法来排的
Set set=hashmap.keySet(); //获取全部键 它的返回类型是set
Iterator iterator=set.iterator();
while(iterator.hasNext()){
System.out.print(hashmap.get(iterator.next())+";");
}
}
// HashSet 不保证集合的迭代顺序
{
HashSet hashset=new HashSet();
//一个绝对不能重复的类型 如果有遇到存重复的值不会报异常,只是add()会返一个boolean型的 false,当然肯定是不会把该元素加入集合 中的,它同样有size(),isEmpty(),remove()等方法。
hashset.add("c");
hashset.add("b");
hashset.add("a");
hashset.add("a");
hashset.add("b");
System.out.println("\nHashSet:");
System.out.println(hashset);
Iterator iterator=hashset.iterator();//取出元素
while(iterator.hasNext()){
System.out.print(iterator.next()+";");
}
}
//Hashtable 任何非 null 对象都可以用作键或值,现在用得不多啦,一个完全可以由其他容器替换的老容器类型
{
Hashtable hashtable=new Hashtable();
hashtable.put("0","c");
hashtable.put("1","a");
hashtable.put("3","c");
hashtable.put("2","b");
System.out.println("\nHashtable:");
//注意与之对应的迭代器是Enumeration,而不是Iterator
Enumeration enumeration=hashtable.elements();//获取元素,Enumeration已经不是主流,Iterator是它的下一代替代品
while(enumeration.hasMoreElements()){
System.out.print(enumeration.nextElement()+";");
}
}
//TreeMap
{
TreeMap treemap=new TreeMap();
treemap.put("0","d"); //指定键值,如果映射以前包含一个此键的映射关系,那么将替换原值
treemap.put("2","a");
treemap.put("1","b");
treemap.put("3","c");
System.out.println("\nTreeMap:");//可以对键排序
System.out.println(treemap);
System.out.println(treemap.firstKey());//返回第一个键
Set set=treemap.keySet();
Iterator iterator=set.iterator();
while(iterator.hasNext()){
System.out.print(treemap.get(iterator.next())+";");
}
}
//TreeSet
{
TreeSet treeset=new TreeSet();//自动排序内容
treeset.add("b");
treeset.add("a");
treeset.add("c");
treeset.add("d");
System.out.println("\nTreeSet:");
System.out.println(treeset);
System.out.println(treeset.first());//返回第一个元素
Iterator iterator=treeset.iterator();
while(iterator.hasNext()){
System.out.print(iterator.next()+";");
}
}
//Vector 一个最早的容器类,实现方式最老,同是它是线程同步的的,所以效率最慢,先进先出
{
Synchronized public Vector getItems(){ //线程同步的方法
return ....;
}
Vector vector=new Vector();
vector.add(0,"b"); //在指定位置加入指定元素
vector.add("a"); //加到最后
vector.addElement("d"); //加到最后,将其集合的大小加1
vector.add("c");
System.out.println("\nVector:");
System.out.println(vector);
vector.set(2,"h");//替换掉指定索引的元素
System.out.println(vector);
Object []str=vector.toArray(); //将集合中的元素拷到一个数组中,注间因为集合中存的是对象,所以数组必须是Object类型
for(int i=0;i<str.length;i++){
System.out.print(str[i]+";");
}
vector.setSize(2);//重新设置大小为2
System.out.println("\n"+vector);
}
}
}
如果添加元素的顺序对你很重要,采用LinkedHashSet和LinkedHashMap,具体用法看帮助...
另外还有SortedMap和SortedSet可以实现一定规则的排序,具体使用请参照JAVA_API,哈哈哈....
分享到:
- 2007-07-10 18:14
- 浏览 2103
- 评论(0)
- 论坛回复 / 浏览 (0 / 3293)
- 查看更多
相关推荐
这个“网页开发的常用示例集合”涵盖了CSS按钮样式和字体图片美化效果,这些都是构建现代网页界面时不可或缺的元素。 首先,CSS(Cascading Style Sheets)是用于描述HTML或XML(包括如SVG、MathML等各种XML方言)...
集合的常用操作 - 交集 - 并集 - 差集 - 子集 - 超集
这是iPhone常用集合类介绍的示例程序,具体参考: http://blog.csdn.net/htttw/article/details/7884218
1、JAVA常用集合框架讲解,以及示例代码 2、集合、链表等等 3、JAVA常用集合框架讲解 JAVA常用集合框架讲解JAVA常用集合框架讲解JAVA常用集合框架讲解JAVA常用集合框架讲解JAVA常用集合框架讲解JAVA常用集合框架讲解...
1. 数据结构与算法:代码集合可能会包含各种常用数据结构(如数组、链表、栈、队列、树、图等)的实现以及常见算法(排序、搜索、动态规划等)的示例。 2. 网络编程:大漠可能会分享一些HTTP请求、网络爬虫、...
使用环境:需要先安装PyCharm(请自己百度下载安装),以及然后官网上下载Python 2.7版本,以及Python 3.7版本后,安装在自己的电脑上。 使用步骤: ...目的:帮助理解复杂集合对象Python中的具体使用。
### PHP常用函数集合详解 #### 一、字符串处理函数 在PHP编程中,字符串处理是非常常见且重要的操作。本文档将详细介绍PHP中一系列常用的字符串处理函数,并解释它们的功能及应用场景。 ##### 1. `addcslashes` ...
本示例将深入探讨Struts中常用的标签及其应用。 1. **`<s:form>`** 标签: 这是Struts2中最基本的表单标签,用于创建HTML表单。它可以自动绑定到Action类的属性,提供数据验证等功能。例如: ```jsp 用户名"/>...
本资源“C++常用库函数示例”集合了多个章节,涵盖了C++中广泛使用的库函数,并提供了实例代码,对于初学者和需要查询具体函数用法的开发者来说,这是一个非常宝贵的参考资料。 首先,我们来看一下`Chapter02`,它...
本文将对常用的集合运算符进行解释和示例。 一、和集 [&] 符号名称:和集 [&] 符号解释:两个或两个以上的集合的所有元素组成一个新的集合,称为和集。 使用示例:双目运算符 (1,2,3)[&](1,3,4)=1 2 3 1 3 4 二...
本文将重点介绍Scala中的集合操作,特别是`List`类型的操作,并通过具体的示例来解释这些操作如何工作。 #### 二、常用操作符 在Scala中,集合操作通常通过方法调用来实现,但也可以使用一些特殊的符号作为操作符...
这个名为"常用shell脚本示例"的资源显然是为初学者设计的,目的是教授如何编写和使用基本到进阶的Shell脚本。 首先,让我们探讨一下什么是Shell脚本。Shell是操作系统提供的一个用户界面,允许用户通过命令行与系统...
这个名为“Java基本常用代码示例”的资源集包含了Java程序设计中的一些基础和常见代码片段,对于初学者或需要复习基本概念的开发者来说非常有用。下面我们将深入探讨这些标签所涵盖的Java基本知识点。 1. **数据...
在这个“常用STL的示例代码”压缩包中,我们很可能会看到以下一些STL组件的使用示例: 1. 容器: - **vector**:动态数组,可以方便地添加和删除元素,支持随机访问。 - **list**:双向链表,插入和删除操作快速...
以下将详细阐述安卓常用工具集合及其重要知识点。 首先,"工具库文档.docx"可能包含的是关于这些工具类的详细说明和使用指南。在实际开发中,这样的文档对于理解和应用工具库至关重要。它可能涵盖各个工具类的功能...
### 细说Java之常用集合类 #### 一、引言 在Java开发过程中,我们经常需要处理数据的集合操作,比如存储、检索、排序等。为了方便开发者使用,Java SDK提供了一系列内置的集合类,它们主要位于`java.util`包中。...
"JavaScript网页设计常用300示例"这个资源集合了大量的实用代码片段,旨在帮助开发者快速实现各种常见功能,提高工作效率。下面我们将深入探讨这些示例所涵盖的知识点。 1. **基础语法与数据类型**:JavaScript的...
在这个“网页开发常用示例demo”中,包含了多种常见且实用的网页元素和特效,旨在帮助开发者快速实现各种功能,提高工作效率。 首先,我们来看弹窗。弹窗是一种常见的用户交互设计,它可以用来提示信息、确认操作...
### Java常用集合以及相关接口详解 #### 一、概述 在Java编程中,集合框架(Collections Framework)是处理数据的核心工具之一。它提供了一系列接口和实现类,用于存储和操作对象集合。Java集合主要包括两大类型:`...
- `<c:forEach>`:循环遍历集合或数组。例如,`${list}" var="item">...</c:forEach>`。 - `<c:import>`:导入外部资源,如HTML、XML或JSP页面。 - `<c:url>` 和 `<c:param>`:构建URL并添加参数。`...