`
444878909
  • 浏览: 635416 次
文章分类
社区版块
存档分类
最新评论

黑马程序员_<<Collection,List>>

 
阅读更多

--------------------ASP.Net+Android+IOS开发.Net培训、期待与您交流! --------------------


1.集合。

1.概述

集合就是一个容器,是用来存储对象的,里面可以存储不同的对象,只要是对象,就可以存储,集合可以分为很多种,他们的底层的存储结构是不一样的(数据结构),所以不同的集合有不同的功能,根据情况选择不同集合。但是他们有共同的特点,就把特点抽取出来了,形成了接口Collection。

2.特点

集合可以存储不同的对象,只要是对象,就可以存储(一般情况下我们要存储一样的对象,否则读取的时候就不容易读取了),数组也是存存储对象的,但是数组只能存储相同的特点。

集合的长度是变化的,数组的度长是固定的。

3.集合框架

下面说一些常见的集合

2.Collection

1.介绍

Collection集合是把所有集合共同的特点抽取出来后,存储在Collection接口中。

2.Collection常用的方法

接口不能实例化,所以我们使用其一个常见子类来进行演示ArrayList.

增加:add(E e)使用了泛型,我们按时理解成Object,就是我们要执行我们在集合中存储的数据类型,否则会有安全隐患。.

判断:isEmpty() 判断是否为空

删除:remove(Object o) ,clear()

装换成数组:toArray()

获取:使用的是迭代器

求交集:removeAll(Collectioncon),从此集合中移con集合中的元素。retainAll(Collectioncon):在此集合中保留集合con中也包含的元素

 package www.fuxi.jihe;
 
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
 
public class jiheText {
  public static void main(String[] args) {
    Collection collection = new ArrayList();
    /* 增加数据 */
    collection.add("zhangsan");
    collection.add("lisi");
    collection.add("wangwu");
    collection.add("zhaoliu");
    /* 查看集合的长度 */
    System.out.println("集合的大小:" + collection.size());
    /* 查看集合是否为空 */
    System.out.println("集合是否为空:" + collection.isEmpty());
    /* 查看集合中的元素,我们使用的是迭代器 */
    Iterator it = collection.iterator();// 获取迭代器
    while (it.hasNext()) {// 判断集合的下一个元素是否为空
      System.out.print(it.next() + ";");// 如果不为空,那么就读取出来
    }
    /* 转换成数组 */
    Object[] obs = collection.toArray();
    System.out.print("\n转换成数组后,数组的元素:");
    for (Object ob : obs) {
      System.out.print(ob + ",");
    }
    /* 判断集合中是否包含某元素 */
    System.out.println("\n集合中是否包含lisi:" + collection.contains("lisi"));
    System.out.println("\n原集合:" + collection);
 
    Collection collection1 = new ArrayList();
    collection1.add("lisi");
    collection1.add("zhaoliu");
    collection1.add("wanggang");
    collection1.add("xuemei");
    collection.removeAll(collection1);// 移除与集合collection1中元素相同的元素
    System.out.println("移除了与Collection1集合中相同的元素:" + collection);
    /* 清空集合 */
    collection.clear();
    System.out.println("清空集合:" + collection);
  }
 
}
结果:
集合的大小:4
集合是否为空:false
zhangsan;lisi;wangwu;zhaoliu;
转换成数组后,数组的元素:zhangsan,lisi,wangwu,zhaoliu,
集合中是否包含lisi:true
 
原集合:[zhangsan, lisi, wangwu, zhaoliu]
移除了与Collection1集合中相同的元素:[zhangsan, wangwu]
清空集合:[]


3.迭代器

迭代器是用来获取集合中元素,其实迭代器是集合的内部类,因为捏不累读取本类的数据最方便,但是不同的集合他们的存储的结构不同,并且每个集合都要读取数据,所以就把他们共同的方法抽取出来,然后利用本类来返回他们自己的迭代器,这样既方便又安全。

hasNext(),判断元素是否可以迭代next()方法然后迭代的下一个元素remove()从集合中移除此元素


package www.fuxi.jihe;
 
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
 
public class jiheText {
  public static void main(String[] args) {
    Collection collection = new ArrayList();
    /* 增加数据 */
    collection.add("zhangsan");
    collection.add("lisi");
    collection.add("wangwu");
    collection.add("zhaoliu");
    Iterator it = collection.iterator();// 获取迭代器
    while (it.hasNext()) {// 判断集合的下一个元素是否为空
      Object ob = it.next();
      System.out.print(ob + ";");// 如果不为空,那么就读取出来
      if (ob.equals("lisi")) {
         it.remove();// 移除lisi元素
      }
    }
 
    System.out.println("\n集合:" + collection);
  }
 
}
结果:
zhangsan;lisi;wangwu;zhaoliu;
集合:[zhangsan, wangwu,zhaoliu]
 

3.List集合

1.概述

list是Collection的子接口,他有自己的独特的方法,他可以使用索引来操作集合中的数据,提供了自己迭代器。元素是有序的,里面的元素可以重复

2.特有的方法

Add(index,element) addAll(index,Collection)

Remove(index) 通过索引删除元素

subList(from,to),去集合中的一部分元素

listIterator(),这个比Iterator()中多了很多方法,里面可以增加元素。增删,该查,反向读取都可以

public class ListDemo {
  public static void main(String[] args) {
    List list = new ArrayList();
    list.add("java01");
    list.add("java02");
    list.add("java03");
    System.out.println("集合:" + list);
    /* 在第二位置添加元素 */
    list.add(1, "java00");
    System.out.println("集合:" + list);
    /* 利用自己的迭代器读取和插入数据,在java03后面添加元素 */
    ListIterator it = list.listIterator(0);
    while (it.hasNext()) {
      if (it.next().equals("java03")) {
         it.add("javaLast");
      }
    }
    System.out.println("集合:" + list);
    /*取List集合中1~3的元素,包含头不包含尾*/
    List list1=list.subList(1, 3);
    System.out.println("集合List1=:" + list1);
  }
 
}
结果:
集合:[java01, java02, java03]
集合:[java01, java00, java02, java03]
集合:[java01, java00, java02, java03, javaLast]
集合List1=:[java00, java02]


4.List的子类

List

|-ArrayList:底层结构是数组,优点:当数据比较多的话,查询数据效率高,缺点:增加和删除效率低,原因移动的数据比较麻烦,说是可变的数组,原因是:默认长度是10,当超多此长度后,会以新建一个数组,长度增加50%,然后把原来的数组付给新的数组,然后再增加新的元素。

|-LinkedList:底层是数据结构是链表,各个元素都是使用指针链接起来 的,有点:增加和删除效率高,缺点:查询效率低

|-Vector:底层也是数组结构,但是是1.0版本以前的长度是100%的速度增长,ArrayList是1.2版本以后的,替换的此类,Vector集合线程同步,ArrayList线程不同步。

Vector有三种读取方式:Iterator(),get(),还有自己特有的杜甫方式,枚举读取

下面介绍枚举读取:

package www.fuxi.jihe;
 
import java.util.Enumeration;
import java.util.Vector;
 
public class VectorDemo {
  public static void main(String[] args) {
    Vector v = new Vector();
    v.add("zhnagsan");// 添加
    v.addElement("lisi");// 添加
    v.add("wangwu");
    Enumeration em = v.elements();// 枚举读取器
    while (em.hasMoreElements()) {
      System.out.print(em.nextElement() + ",");
    }
  }
 
}
结果:
zhnagsan,lisi,wangwu,


5.LinkedList

特有方法

addFirst();addLast();

getFirst();getLast(); 获取元素但是不删除元素

removeFirst();removeLast();获取元素但是删除元素,如果不存在此元素,那么据会抛出异常

1.6版本后的新方法

pollFirst();pollLast();获取并移除第一个元素或者最后一个元素,如果不存在,返回为null,不抛出异常。

offerFirst();offerlast();

peekFirst();peekLast();

package www.fuxi.jihe;
 
import java.util.LinkedList;
 
public class LinkedListDemo {
  public static void main(String[] args) {
    LinkedList list = new LinkedList();
    list.add("forward01");
    list.addFirst("forward00");
    list.addLast("forwardLast");
    System.out.println("集合:" + list);
    // list.get(3);// 此会报异常,原因是集合中没有此元素
    System.out.println("集合中的第一个元素:" + list.remove(0));// 移除并且能获得,但是如果没有此元素的话,那么就会报异常
    System.out.println("移除第一个元素后的集合:" + list);
    System.out.println("获取第一个元素:" +list.peekFirst());// 获取第一个元素,但是不移除,如果不存在,则是null
    System.out.println("获取第一个元素:" +list.peekLast());// 获取最后一个元素,但是不移除,如果不存在,则是null
  }
 
}
集合:[forward00, forward01, forwardLast]
集合中的第一个元素:forward00
移除第一个元素后的集合:[forward01, forwardLast]
获取第一个元素:forward01
获取第一个元素:forwardLast
 


--------------------ASP.Net+Android+IOS开发.Net培训、期待与您交流! --------------------


分享到:
评论

相关推荐

    logic:iterate标签当遍历的collection为Map时的使用

    Map里存放的是List时&lt;br&gt;&lt;br&gt;&lt;logic:iterate id="destMap" name="srcMap"&gt;&lt;br&gt;&lt;br&gt; &lt;logic:iterate id="bean" name="destMap" property="value" /&gt;&lt;br&gt;&lt;br&gt; &lt;bean:write name="bean" property="name" /&gt;&lt;br&gt;&lt;br&gt; &lt;/...

    IEnumerable<T>、ICollection<T>、IList<T>、ObservableCollectin<T>和Collection<T>的关系

    IEnumerable&lt;T&gt;、ICollection&lt;T&gt;、IList&lt;T&gt;、ObservableCollectin&lt;T&gt;和Collection&lt;T&gt;的关系。还有UML图。希望能帮到有需要的人。:)

    IEnumerable<T>、IEnumerable、ICollection<T>、IList<T>、ObservableCollectin<T>和Collection<T>得关系。

    IEnumerable&lt;T&gt;、IEnumerable、ICollection&lt;T&gt;、IList&lt;T&gt;、ObservableCollectin&lt;T&gt;和Collection&lt;T&gt;的关系,里面还有个UML图,希望能对大家有所帮助!

    Visual C++ 编程资源大全(英文源码 DLL)

    1,01.zip&lt;br&gt;Dialogs in DLL&lt;br&gt;在DLL中实现对话框(5KB)&lt;END&gt;&lt;br&gt;2,02.zip&lt;br&gt;Export dialogs in MFC Extension DLLs&lt;br&gt;在MFC扩充DLL中输出对话框(12KB)&lt;END&gt;&lt;br&gt;3,03.zip&lt;br&gt;Remapping resource script ID's&lt;br&gt;...

    Visual C++ 编程资源大全(英文源码 表单)

    1,01.zip&lt;br&gt;MFC Extension Library&lt;br&gt;MFC扩展界面库, 使用Visual C++ 6.0(15KB)&lt;END&gt;&lt;br&gt;2,02.zip&lt;br&gt;Visual Studio style UI&lt;br&gt;Visual Studio风格的界面效果(15KB)&lt;END&gt;&lt;br&gt;3,03.zip&lt;br&gt;Internet Explorer 4 ...

    Visual C++ 编程资源大全(英文源码 系统)

    1,01.zip&lt;br&gt;Class for displaying system error messages&lt;br&gt;显示系统错误信息的一个类(5KB)&lt;END&gt;&lt;br&gt;2,02.zip&lt;br&gt;Simple Thread Class&lt;br&gt;一个简单的线程类(13KB)&lt;END&gt;&lt;br&gt;3,03.zip&lt;br&gt;Single Instance Program ...

    黑马程序员-Java语言进阶-源码、教程笔记.zip

    day03_List、Set、数据结构、Collections day04_Map,斗地主案例 day05_异常,线程 day06_线程、同步 day07_等待与唤醒案例、线程池、Lambda表达式 day08_File类、递归 day09_字节流、字符流 day10_缓冲流、转换流、...

    mybatis collection list string

    NULL 博文链接:https://jaychang.iteye.com/blog/2357143

    启用了不安全的http方法漏洞

    &lt;web-resource-collection&gt; &lt;url-pattern&gt;/*&lt;/url-pattern&gt; &lt;http-method&gt;PUT&lt;/http-method&gt; &lt;http-method&gt;DELETE&lt;/http-method&gt; &lt;http-method&gt;HEAD&lt;/http-method&gt; &lt;http-method&gt;OPTIONS&lt;/http-method&gt; ...

    Visual C++ 编程资源大全(英文源码 网络)

    mfciterator.zip&lt;br&gt;STL Iterators and the MFC (29KB)&lt;END&gt;&lt;br&gt;66,atldatetime.zip&lt;br&gt;An ATL replacement for COleDateTime (7KB)&lt;END&gt;&lt;br&gt;67,excoll.zip&lt;br&gt;Enhanced collection template classes: CArrayEx, ...

    客服模块左侧代码

    search=y" target="_blank"&gt;&lt;font color="#0000ff"&gt;4.9&lt;/font&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td height="3" background=...

    webservice-ajax

    ScriptManager&gt;&lt;br&gt;&lt;div&gt;&lt;/div&gt;&lt;br&gt;&lt;/form&gt;&lt;br&gt;&lt;/body&gt;&lt;br&gt;Then we have to add Services collection to our ScriptManager object, add ServiceReference to the Services collection and specify Path to the ...

    Visual C++ 编程资源大全(英文源码 数据库)

    DBInfo_src.zip&lt;br&gt;Explore the structure of tables (and views) (20KB)&lt;END&gt;&lt;br&gt;35,ISQLMFC.zip&lt;br&gt;A tool that allows you to query ODBC sources(674KB)&lt;END&gt;&lt;br&gt;36,simple_odbc_src.zip&lt;br&gt;A collection of ...

    Visual C++ 编程资源大全(英文源码 ATL)

    qlistctrl.zip&lt;br&gt;QListCtrl - a popup list box like that in Visual C++ 6.0(36KB)&lt;END&gt;&lt;br&gt;45,ncombo.zip&lt;br&gt;An Enhanced Combo Box Control.(194KB)&lt;END&gt;&lt;br&gt;46,XFloorWnd.zip&lt;br&gt;Floor Window Control(341KB)...

    轮播服装饰品鞋帽美容护肤皮具包 免费淘宝装修模板

    &lt;TD align=left width=98 height=30&gt;&lt;strong&gt;&lt;font color=#009933&gt;¥98元&lt;/font&gt;&lt;/strong&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/DIV&gt;&lt;/TD&gt; &lt;TD align=middle width=173 background=...

    GPU.Gems.3.part1.rar

    &lt;br&gt;&lt;br&gt;3Dfacto&lt;br&gt;Adobe Systems&lt;br&gt;Apple&lt;br&gt;Budapest University of Technology and Economics&lt;br&gt;CGGVeritas&lt;br&gt;The Chinese University of Hong Kong&lt;br&gt;Cornell University&lt;br&gt;Crytek&lt;br&gt;Czech Technical ...

    GPU.Gems.3.part2.rar

    &lt;br&gt;&lt;br&gt;3Dfacto&lt;br&gt;Adobe Systems&lt;br&gt;Apple&lt;br&gt;Budapest University of Technology and Economics&lt;br&gt;CGGVeritas&lt;br&gt;The Chinese University of Hong Kong&lt;br&gt;Cornell University&lt;br&gt;Crytek&lt;br&gt;Czech Technical ...

    VB编程资源大全(英文源码 其它)

    Winnt for NT) and check in screens saver settings.&lt;END&gt;&lt;br&gt;73,Cls_sample_Collection.zip&lt;br&gt;Implement with Class and Collection a List Collection with add and remove data elements.&lt;END&gt;&lt;br&gt;74,...

    Java测试题2答案

    &lt;br&gt; }&lt;br&gt;}&lt;br&gt;&lt;br&gt;答案::填空第1题&lt;br&gt;x=10,a=3,b=4,c=5&lt;br&gt;填空第2题&lt;br&gt;java.util&lt;br&gt;填空第3题&lt;br&gt;(public )(static )(void)(main)(String args[])&lt;br&gt;填空第4题&lt;br&gt;1&lt;br&gt;填空第5题&lt;br&gt;

    java基础学习总结

    &lt;&lt;java基础&gt;&gt; &lt;&lt;类和对象&gt;&gt; &lt;&lt;接口&gt;&gt; &lt;&lt;继承&gt;&gt; &lt;&lt;异常&gt;&gt; &lt;&lt;线程&gt;&gt; &lt;&lt;applet&gt;&gt; &lt;&lt;Color&gt;&gt; &lt;&lt;Collection&gt;&gt; &lt;&lt;I/O流&gt;&gt;

Global site tag (gtag.js) - Google Analytics