Java之集合1

  通常所说的集合类型主要有3种:set(集)、list(列表)和map(映射)。如图所示,

一、Collection接口

  Collection是最基本的集合接口。Collection的下属结构如图所示,由Collection的接口派生的子接口有List和Set。

  Collection支持迭代器操作,进行查询。

    Iterator iter = collection.iterator(); // 获得一个迭代子
      while(iter.hasNext()) {   // 判断当有下一个元素时
        Object obj = iter.next(); // 得到下一个元素
      }

    • List (定义了一个允许元素重复的有序列表。并且提供了特殊的迭代器ListIterator,不仅可以实现查询操作,还可实现插入和删除操作,以及双向访问。)

      • LinkedList (链表,不是基于Array的LIst,适合做添加和删除操作,因为不涉及到元素的移动)
      • ArrayList (基于Array的List,不同步的,性能优于Vector,适合做查询操作)
      • Vector (基于Array的List,同步synchronized,线程安全,是旧的历史集合类。)     
          List<String> list = new LinkedList<String>() ;
		for (int i = 0; i <= 5; i++) {
			list.add("a"+i) ;
		}
		System.out.println("集合 list="+list); 

		Collections.shuffle(list); 		// 随机排列
		System.out.println("随机排列 list="+list);

		Collections.sort(list); 		// 排序
		System.out.println("排序后 list="+list);

		Collections.reverse(list); 		// 逆序排列
		System.out.println("逆序排列 list="+list);

		System.out.println("二分查找有序集合方式a3的位置为 "+Collections.binarySearch(list, "a3"));	// 二分查找

    Result为:

     

    • Set(表示数学意义上的集合的概念,不包含重复元素,即不存在两个对象a.equals(b)为true的情况。set集合本身是无序的。)

      • TreeSet (可以实现从set中有序的取出元素)
      • HashSet(在集合中存储效率高,但需要添加到 HashSet 的对象需要采用恰当分配散列码的方式来实现hashCode() 方法。)       
 1 package javaBasic;
 2
 3 import java.util.HashSet;
 4 import java.util.Set;
 5 import java.util.TreeSet;
 6
 7 public class SetExample
 8 {
 9     public static void main(String[] args) {
10         Set<String> set = new HashSet<String>() ;
11         set.add("ZhangSan") ;
12         set.add("LiSi") ;
13         set.add("Wyao") ;
14         set.add("ZhaoLiu") ;
15         set.add("Wyao") ;
16
17         System.out.println(set) ;
18
19         Set<String> treeSet = new TreeSet<String>(set) ;
20         System.out.println(treeSet);
21     }
22 }

  Result:

     

  由结果可知,重复元素“Wyao”只出现了一次,并且使用TreeSet进行排序之后输出为有序,按照字母先后顺序排序。

二、Map接口

  1. Map 接口不是 Collection 接口的继承。提供了键Key到值Value的映射。键是唯一的,不允许重复,但是值可以有多值,用逗号隔开,可以重复。

      Map(key-value 映射)

        — HashMap (在Map 中插入、删除和定位元素,HashMap 是最好的选择。HashMap允许null值作为key和value。不同步的,采用快速失败机制,因此效率更高。)

        — Hashtable (是原始集合类之一,也称作遗留类。而Hashtable不可以null值作为key和value。同步的,)

        — WeakHashMap

  2. TreeMap与HashMap的比较

    Map有两种常见的实现方式:HashMap和TreeMap。根据需要决定要使用哪种方式。其中,HashMap采用快速失败机制,在Map中插入、删除、查询元素较快。若是按顺序遍历键Key,则采用TreeMap方式

  会更快。使用HashMap 要求添加的键类明确定义了 hashCode() 实现。有了TreeMap 实现,添加到映射的元素一定是可排序的。

   

   部分内容参考http://blog.csdn.net/u014136713/article/details/52089156

时间: 2024-08-27 04:26:26

Java之集合1的相关文章

六:Java之集合

集合包含的内容很多,我发现一个很好的博客,感觉自己都没有写的必要了! 链接献上  Java集合 六:Java之集合,布布扣,bubuko.com

Java复习-集合

Java的集合大致分为以下几类 map set list queue set代表无序,不可重复的集合 list代表有序,重复的集合 map代表了映射关系的集合 queue代表的是一种队列集合 从上面的图我们可以看出,访问set集合的时候我们只能根据元素本身来访问,访问list集合的时候可以直接根据元素的索引来访问,如果访问map集合中的元素,可以根据每项的key值访问元素,collection是list map queue的父接口,该接口里定义的方法,可以操作set map queue pack

java的集合框架之一

java是一套很成熟的东西,很多商用的东西都喜欢用它,用的人多,稳定.不过一般也不怎么说起它,因为太常见了,私下里说,写java应用层得就像农民工,每一处都是搭积木,根据设计师的东西如何优雅地搭好积木,当然美其名曰,论农民工搭积木的艺术修养.不难,但是东西很多,经验在里面是一个相当重要的东西.以上纯属每天扯淡,笑看即可,毕竟我目前就是个渣java程序员. java的集合框架以collection接口当作基础,这个接口定义了基本框架,包括size.hashcode.iterator.add.add

【Java】集合_学习笔记

一.集合 1.集合类也称容器类,主要负责保存.盛装其他数据. 2.集合可以保存数量不确定的数据,保存具有映射关系的数据(也称关联数组). 3.Java5后提供一些多线程安全的集合类,放在java.util.concurrrent.(utility的缩写,意为多用途的,实用的) 4.集合只能保存对象(实际是对象的引用,习惯称对象). 5.Java的集合主要由Collection和Map两个接口派生而出,Map接口的实现类用于保存关联数组,Set集合元素不可重复,通过元素本身访问,Map集合可以通过

Java基础——集合(三)——泛型、增强for、工具类

         接上篇,<Java基础--集合(二)--迭代器.Map集合> 六.泛型 (1)定义: 泛型是一种把明确类型的工作放在了创建对象或者调用方法时候才去明确的特殊的类型. (2)格式: <数据类型> ArrayList<String> aList=new ArrayList<String>(); <String> 即表示的是泛型 (3)好处:(掌握) A:解决了黄色警告线问题 B:把运行期间的转换异常给提前到了编译期间 C:优化了程序

Java中集合与数组的切换

在Java开发中常常遇见集合与数组的互相切换,如何实现呢,呵呵呵,很简单: import java.util.ArrayList; import java.util.Arrays; import java.util.HashSet; import java.util.List; import java.util.Set; public class Test { /** * 将Set集合转换为数组 * * @author GaoHuanjie */ private static void setT

java之集合概述

集合也称容器:从大的类别分成两类:Collection和Map,也即:单列和双列列表. java编程思想中一张图说明该体系的整体结构:其中黑色着重的类是经常使用的类. 1 Collection Collection:作为单列集合的根接口.该类集合的继承体系如下: Collection分为两大类:List和Set 1)List: 特点:有序的 collection(也称为序列):列表通常允许重复的元素.       List 接口提供了特殊的迭代器,称为 ListIterator,除了允许 Ite

java初识集合(list,set,map)

java的集合有三类:list,set,map.list和set继承了collection接口.区别(list可以添加重复对象,且按照索引位置排序:set没有这两种特点). map是通过key操作里面的value,操作的是成对的对象.put放入对象,get取出对象. 另外:colletion没有随机访问的get()方法,因为collection还包括set,而set有自己的内部顺序.所以,要检查collection元素,必须使用iterator对象. 1.list中有ArrayList(类似数组

谈谈Java的集合组件

让我们一起谈谈Java的集合组件 我们在使用Java的时候,都会遇到并使用到Java的集合.在这里通过自己的理解和网上的资源对Java的集合方面的使用做一个简单的讲解和总结. Java主要分为3个集合组件:Set(集).List(列表).Map(映射). Collection接口:Collection是最基本的集合接口,声明了适用于Java集合的通用方法.Set和List都继承了Collection,Map. Collection接口的方法: boolean add(Object o):向集合中

Java基础——集合(二)——迭代器、Map集合

接上篇,<Java基础--集合(一)--集合体系和Collection> 四.迭代器的使用 使用步骤: 1.通过集合对象获取迭代器对象. 2.通过迭代器对象判断. 3.通过迭代器对象获取. 迭代器原理 由于多种集合的数据结构不同,所以存储方式不同,所以,取出方式也不同. 这个时候,我们就把判断和获取功能定义在了一个接口中,将来,遍历哪种集合的时候,只要该集合内部实现这个接口即可. 迭代器源码 public interface Iterator { publicabstract boolean