java--集合概述

举报
brucexiaogui 发表于 2021/12/30 01:08:06 2021/12/30
【摘要】 java--集合概述 一、集合框架总览图 二、为什么需要集合   为什么出现集合类? 面向对象语言对事物的体现都是以对象的形式,所以为了方便对多个对象的操作,就要对对象进行存储,集合就是存储对象最常用的一种方式。 数组和集合类同是容器,有何不同? 数组虽然也可以存储对象,但长度是固定的;集合长度是可变的。数组中可...

java--集合概述

一、集合框架总览图

二、为什么需要集合

 

  • 为什么出现集合类?

面向对象语言对事物的体现都是以对象的形式,所以为了方便对多个对象的操作,就要对对象进行存储,集合就是存储对象最常用的一种方式。

  • 数组和集合类同是容器,有何不同?

数组虽然也可以存储对象,但长度是固定的;集合长度是可变的。数组中可以存储任意数据类型,集合只能存储对象。

  • 集合类的特点

集合只用于存储对象,集合长度是可变的,集合可以存储不同类型的对象。

三、集合分类概述

四、集合的两大接口

Java集合类主要由两个接口派生出来:
Collection

 

Set :不能存放重复对象

 

List :可存放重复对象,有序

 

Queue :队列

 

SortedSet :可对集合数据排序

 

Map

SortedMap :可对集合数据排序

Collection和Iterator接口实例


  
  1. package collection;
  2. import java.util.ArrayList;
  3. import java.util.Collection;
  4. import java.util.Date;
  5. import java.util.Iterator;
  6. /**
  7. * 在集合里的存储,永远存的是 一个引用地址
  8. * @author will
  9. *
  10. */
  11. public class CollectionDemo {
  12. public static void main(String[] args) {
  13. Collection c = new ArrayList();
  14. /*
  15. * boolean add(E e)
  16. 确保此 collection 包含指定的元素(可选操作)。
  17. boolean addAll(Collection c)
  18. 将指定 collection 中的所有元素都添加到此 collection 中(可选操作)。
  19. void clear()
  20. 移除此 collection 中的所有元素(可选操作)。
  21. * */
  22. c.add("A");
  23. c.add("A");
  24. //c.add(1);//java5之前不允许,Java5之前没有自动装箱
  25. c.add(new Integer(1));//
  26. c.add(23);
  27. StringBuilder sb = new StringBuilder("SB");
  28. c.add(sb);
  29. boolean b = c.add("A");
  30. System.out.println(b);
  31. System.out.println(c);
  32. sb.append("OOXX");
  33. System.out.println(c);
  34. Collection c2 = new ArrayList();
  35. c2.add(new Date());
  36. c2.add("春哥");
  37. c.addAll(c2);
  38. System.out.println(c);
  39. //c.clear();
  40. System.out.println(c);
  41. /*
  42. * boolean contains(Object o)
  43. 如果此 collection 包含指定的元素,则返回 true。
  44. boolean containsAll(Collection<?> c)
  45. 如果此 collection 包含指定 collection 中的所有元素,则返回 true。
  46. * */
  47. System.out.println(c.contains("春哥"));
  48. System.out.println(c.containsAll(c2));
  49. System.out.println(c2.containsAll(c));
  50. /*
  51. * boolean isEmpty()
  52. 如果此 collection 不包含元素,则返回 true。
  53. * */
  54. System.out.println("c.isEmpty()= "+c.isEmpty());
  55. /*
  56. * boolean remove(Object o)
  57. 从此 collection 中移除指定元素的单个实例,如果存在的话(可选操作)。
  58. boolean removeAll(Collection<?> c)
  59. 移除此 collection 中那些也包含在指定 collection 中的所有元素(可选操作)。
  60. * */
  61. System.out.println(c.remove("凤姐"));
  62. System.out.println(c.remove("春哥"));
  63. System.out.println(c);
  64. c.removeAll(c2);
  65. System.out.println(c);
  66. /*
  67. * boolean retainAll(Collection<?> c) 其实就是求两个集合的交集
  68. 仅保留此 collection 中那些也包含在指定 collection 的元素(可选操作)。
  69. * */
  70. c2.add(23);
  71. c2.add("A");
  72. c.retainAll(c2);
  73. System.out.println(c);
  74. /**
  75. * int size() 返回此 collection 中的元素数。
  76. */
  77. System.out.println(c.size());
  78. /**
  79. * Object[] toArray()
  80. 返回包含此 collection 中所有元素的数组。
  81. */
  82. Object[] os = c.toArray();
  83. for (Object o : os) {
  84. System.out.println("-->" + o);
  85. }
  86. /**
  87. * for-each使用的场合, 数组和 Iterable对象
  88. */
  89. System.out.println("------------------");
  90. for (Object object : c) {
  91. System.out.println(object);
  92. }
  93. /**
  94. * Iterator iterator() 返回在此 collection 的元素上进行迭代的迭代器。
  95. *
  96. * Iterator类:
  97. * boolean hasNext()
  98. 如果仍有元素可以迭代,则返回 true。
  99. Object next()
  100. 返回迭代的下一个元素。
  101. void remove()
  102. 从迭代器指向的 collection 中移除迭代器返回的最后一个元素(可选操作)。
  103. */
  104. System.out.println("==================");
  105. Iterator it = c.iterator();
  106. //每调用next方法后,指针就会向后移动一个位置
  107. System.out.println(it.next());
  108. System.out.println(it.next());
  109. System.out.println(it.next());
  110. System.out.println(it.next());
  111. //System.out.println(it.next());//java.util.NoSuchElementException指针已到最后,没有下一个元素了
  112. System.out.println(it.hasNext());
  113. if(it.hasNext()){
  114. System.out.println(it.next());
  115. }
  116. it = c.iterator();
  117. while(it.hasNext()){
  118. System.out.println("----->"+it.next());
  119. }
  120. /*
  121. * for(it = c.iterator();it.hasNext();){
  122. System.out.println("for----->"+it.next());
  123. }
  124. 老外喜欢用,就是因为性能高一低;此时it在for语句里创建,声明周期短一些
  125. *
  126. * */
  127. for(it = c.iterator();it.hasNext();){
  128. System.out.println("for----->"+it.next());
  129. }
  130. /**
  131. * for-each
  132. */
  133. }
  134. }

 

文章来源: brucelong.blog.csdn.net,作者:Bruce小鬼,版权归原作者所有,如需转载,请联系作者。

原文链接:brucelong.blog.csdn.net/article/details/79962332

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。