Java中的集合的总结_Android, Python及开发编程讨论区_Weblogic技术|Tuxedo技术|中间件技术|Oracle论坛|JAVA论坛|Linux/Unix技术|hadoop论坛_联动北方技术论坛  
网站首页 | 关于我们 | 服务中心 | 经验交流 | 公司荣誉 | 成功案例 | 合作伙伴 | 联系我们 |
联动北方-国内领先的云技术服务提供商
»  游客             当前位置:  论坛首页 »  自由讨论区 »  Android, Python及开发编程讨论区 »
总帖数
1
每页帖数
101/1页1
返回列表
0
发起投票  发起投票 发新帖子
查看: 3227 | 回复: 0   主题: Java中的集合的总结        下一篇 
鲲鹏展翅
注册用户
等级:少校
经验:1148
发帖:79
精华:9
注册:2012-11-19
状态:离线
发送短消息息给鲲鹏展翅 加好友    发送短消息息给鲲鹏展翅 发消息
发表于: IP:您无权察看 2012-11-19 12:57:17 | [全部帖] [楼主帖] 楼主

今天老师为我们讲了集合框架的一些内容,下面我从这几个方面进行总结。

1.什么是集合框架?

   2.list,set,map三者的特点及基本使用。

   ①.熟悉List接口,了解何时以及如何使用ArrayList或者LinkedList来存储元素
   ②熟悉Set接口,了解何时及如何使用HashSet,LinkedHashSet或TreeHashSet来存储元素
   ③理解Collection和Map的区别,知道何时及如何使用HashMap,LinkedHashMap,TreeHashMap来存储
[/color]

====================================================================================================================================================================

[color=brown]1.集合框架是什么?
      了解集合框架之前,我们先得知道什么是集合,所谓集合是指把具有相同性质的一类东西,汇聚成一个整体,这样就可以称为集合。有了集合的概念,那么什么是集合框架呢?集合框架是为表示和操作集合而规定的一种统一的标准的体系结构。任何集合框架都包含三大块内容:对外的接口、接口的实现和对集合运算的算法。

2.list,set,map三者的特点及基本使用。

① List:List接口对Collection进行了简单的扩充,它的具体实现类常用的有ArrayList和LinkedList。你可以在List容器中放入数据或者取出数据,数据的存储是有序的(根据写入的先后顺序),并且我们所写入的数据是可以出现重复情况的。ArrayList相对LinkList在随机读取速度上是有优势的,它的随机读取速度是非常之快的。而LinkList它是以链表的形式进行存储的,因此在插入和删除操作中具有很大优势。我们在对Lits进行数据查找时,根据的是数据所在的索引。 下面是一段关于ArrayList一些简单操作的代码。

Java代码
北京联动北方科技有限公司北京联动北方科技有限公司北京联动北方科技有限公司

  1. import java.util.List; 
  2. import java.util.ArrayList; 
  3. import javax.swing.text.html.HTMLDocument.Iterator; 
  4. publicclass listdemo { 
  5.       publicstaticvoid main(String args[]) { 
  6.              List<String> list = GreatArraylist(); 
  7.              List<String> list2 = GreatArraylist(); 
  8.             // 在指定位置添加一个元素 
  9.              list.add(3, "数据100"); 
  10.             // 添加一个collection 中的所有元素 
  11.              list.addAll(list2); 
  12.             // 从列表删除所有元素 
  13.             //list.clear(); 
  14.             // 判断列表是否包含指定元素 包含返回true 
  15.              System.out.println(list.contains("数据1")); 
  16.             //判断列表是否包含指定 collection中所有元素 
  17.              System.out.println(list.contains(list)); 
  18.             //判断是否与指定对象相等 相等返回true 
  19.              System.out.println(list.equals(list)); 
  20.             //返回列表的hash值 
  21.              System.out.println(list.hashCode()); 
  22.             //找元素,找到返回其索引,没找到返回-1 
  23.              System.out.println(list.indexOf(list2)); 
  24.             //迭代器 
  25.             //Iterator ite=(Iterator) list.iterator(); 
  26.             //ite.next(); 
  27.             //返回此列表中最后出现的指定元素的索引;如果列表不包含此元素,则返回 -1。 
  28.              System.out.println(list.lastIndexOf("数据100")); 
  29.             //移除 
  30.              System.out.println(list.remove(3)); 
  31.             // 
  32.             
  33.              printArraylist(list); 
  34.        } 
  35.       
  36.       /** 
  37.        * 创建一个Arraylist 
  38.        * @return 
  39.        */
  40.       publicstatic ArrayList<String> GreatArraylist() { 
  41.             
  42.              ArrayList<String> list = new ArrayList<String>(); 
  43.             // 给List添加数据 
  44.             for (int i = 0; i < 10; i++) { 
  45.                    list.add("数据" + i); 
  46.              } 
  47.             // 返回一个Arraylist对象 
  48.             return list; 
  49.             
  50.        } 
  51.       
  52.       /** 
  53.        * 打印输出 
  54.        * @param list 
  55.        */
  56.       publicstaticvoid printArraylist(List<String> list) { 
  57.              System.out.println("List的长度为:" + list.size()); 
  58.             for (int i = 0; i < list.size(); i++) { 
  59.                    System.out.println(list.get(i)); 
  60.              } 
  61.        } 


import java.util.List;
import java.util.ArrayList;

import javax.swing.text.html.HTMLDocument.Iterator;

public class listdemo {
       public static void main(String args[]) {
             List<String> list = GreatArraylist();
             List<String> list2 = GreatArraylist();
             // 在指定位置添加一个元素
             list.add(3, "数据100");
             // 添加一个collection 中的所有元素
             list.addAll(list2);
             // 从列表删除所有元素
             //list.clear();
             // 判断列表是否包含指定元素 包含返回true
             System.out.println(list.contains("数据1"));
             //判断列表是否包含指定 collection中所有元素
             System.out.println(list.contains(list));
             //判断是否与指定对象相等 相等返回true
             System.out.println(list.equals(list));
             //返回列表的hash值
             System.out.println(list.hashCode());
             //找元素,找到返回其索引,没找到返回-1
             System.out.println(list.indexOf(list2));
             //迭代器
             //Iterator ite=(Iterator) list.iterator();
             //ite.next();
             //返回此列表中最后出现的指定元素的索引;如果列表不包含此元素,则返回 -1。
             System.out.println(list.lastIndexOf("数据100"));
             //移除
             System.out.println(list.remove(3));
             //

             printArraylist(list);
       }

       /**
       * 创建一个Arraylist
       * @return
       */
       public static ArrayList<String> GreatArraylist() {

             ArrayList<String> list = new ArrayList<String>();
             // 给List添加数据
             for (int i = 0; i < 10; i++) {
                   list.add("数据" + i);
             }
             // 返回一个Arraylist对象
             return list;

       }

       /**
       * 打印输出
       * @param list
       */
       public static void printArraylist(List<String> list) {
             System.out.println("List的长度为:" + list.size());
             for (int i = 0; i < list.size(); i++) {
                   System.out.println(list.get(i));
             }
       }
}



②Set:Set和List一样,也是对Collection接口进行了扩充,它的具体实现类常用的有HashSet、LinkedHashSet、TreeSet。Set与List的不同之处在于:Set中的元素不能重复,数据存放也是无序的,并且它是按值存取的。  下面有一段示意代码,假设已经存在一个HashSet set,我们要求打印输出其内容:

Java代码
北京联动北方科技有限公司北京联动北方科技有限公司北京联动北方科技有限公司

  1. publicstaticvoid printSet(Set<String> set){ 
  2.        Iterator<String> iter = set.iterator();//得到Set集合的迭代器对象 
  3.       while(iter.hasNext()){//判断Set集合中是否还有元素可以进行迭代 
  4.             //得到集合中的数据 
  5.              String str = iter.next();//取出迭代器中的元素对象 
  6.              System.out.println(str);//输出 
  7.        } 
  8.  } 


public static void printSet(Set<String> set){
       Iterator<String> iter = set.iterator();//得到Set集合的迭代器对象
       while(iter.hasNext()){//判断Set集合中是否还有元素可以进行迭代
             //得到集合中的数据
             String str = iter.next();//取出迭代器中的元素对象
             System.out.println(str);//输出
       }
}



③Map:Map是一种把键对象和值对象进行关联的容器,而一个值对象又可以是一个Map,依次类推,这样就可形成一个多级映射。对于键对象来说,像Set一样,一个Map容器中的键对象不允许重复,这是为了保持查找结果的一致性;如果有两个键对象一样,那你想得到那个键对象所对应的值对象时就有问题了,可能你得到的并不是你想的那个值对象,结果会造成混乱,所以键的唯一性很重要,也是符合集合的性质的。当然在使用过程中,某个键所对应的值对象可能会发生变化,这时会按照最后一次修改的值对象与键对应。对于值对象则没有唯一性的要求。你可以将任意多个键都映射到一个值对象上,这不会发生任何问题(不过对你的使用却可能会造成不便,你不知道你得到的到底是那一个键所对应的值对象)。  如下是一段简单的HashMap操作的代码,我们对其赋值再将其打印出来。

Java代码
北京联动北方科技有限公司




赞(0)    操作        顶端 
总帖数
1
每页帖数
101/1页1
返回列表
发新帖子
请输入验证码: 点击刷新验证码
您需要登录后才可以回帖 登录 | 注册
技术讨论