Java基础之集合框架详解

举报
小小张自由--张有博 发表于 2021/11/23 00:32:57 2021/11/23
【摘要】     Java集合类总结大全 集合和数组之间的差别 Collection:单列集合类的根接口,用于存储一系列符合某种规则的元素。 Collection接口中常用的方法 List接口中常用的方法 ArrayList集合 LinkedList集合 set接口 HashSet集合 Lin...
 
 

Java集合类总结大全

集合和数组之间的差别

Collection:单列集合类的根接口,用于存储一系列符合某种规则的元素。

Collection接口中常用的方法

List接口中常用的方法

ArrayList集合

LinkedList集合

set接口

HashSet集合

LinkedHashSet集合

Collections:集合工具类

Map双列集合

Map接口中常用的方法

Map集合的两种遍历方式

一、使用set方法 通过键找值的方式

二、使用Entry对象遍历map集合

LinkedHashMap


集合是Java中提供的一种容器,可以存储多个数据。

集合和数组之间的差别

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

     数组中存储的是同一类型的元素,可以存储基本数据类型的值。(可以是对象,可以是基本数据类型)

     集合存储的都是对象,而且对象的类型可以不一致。(只能是对象)

Collection:单列集合类的根接口,用于存储一系列符合某种规则的元素。

它有两个重要的子接口,分别是 java.util.List 和 java.util.Set 。

     List 的特点是元素有序、元素可重复。

     Set 的特点是元素无序而且不可重复。

     List 接口的主要实现类有 java.util.ArrayList 和Java.util.LinkedList 

     Set 接口的主要实现类有 java.util.HashSet 和 java.util.TreeSet 

Collection接口中常用的方法


  
  1. public static void main(String[]args){
  2. //创建集合对象,使用多态
  3. Collection<String>coll=newArrayList<>();
  4. System.out.println(coll);//空
  5. //add()方法
  6. booleanb1=coll.add("小小张自由!");
  7. coll.add("小张!");coll.add("小小张!");
  8. coll.add("小小自由!");coll.add("小小张自由!");
  9. System.out.println(coll);
  10. //remove()方法
  11. coll.remove("小小张自由!");//重复值只删除第一个
  12. System.out.println(coll);
  13. //contains()方法判断集合中是否包含给定对象
  14. System.out.println(coll.contains("zyb"));
  15. System.out.println(coll.contains("小小张自由!"));
  16. //isEmpty();判断集合是否为空
  17. System.out.println(coll.isEmpty());
  18. //size()方法返回集合中元素的个数
  19. System.out.println(coll.size());
  20. //toArray()方法把集合中元素存储到数组中
  21. Object[]objects=coll.toArray();
  22. for(inti=0;i<objects.length;i++){
  23. System.out.println(objects[i]);
  24. }
  25. //遍历集合
  26. /*for(inti=0;i<coll.size();i++){
  27. System.out.println(coll[i]);
  28. }*/
  29. //清空
  30. coll.clear();
  31. System.out.println(coll);
  32. }

List接口中常用的方法

  • public void add(int index, E element): 将指定的元素,添加到该集合中的指定位置上。
  • public E get(int index):返回集合中指定位置的元素。
  • public E remove(int index): 移除列表中指定位置的元素, 返回的是被移除的元素。
  • public E set(int index, E element):用指定元素替换集合中指定位置的元素,返回值的更新前的元素。

ArrayList集合

     java.util.ArrayList集合数据存储的结构是数组结构元素增删慢,查找快,由于日常开发中使用最多的功能为查询数据、遍历数据,所以ArrayList是最常用的集合。

LinkedList集合

java.util.LinkedList集合数据存储的结构是链表结构。方便元素添加、删除的集合。

LinkedList集合特有的方法

  • public void addFirst(E e):将指定元素插入此列表的开头。
  • public void addLast(E e):将指定元素添加到此列表的结尾。
  • public E getFirst():返回此列表的第一个元素。
  • public E getLast():返回此列表的最后一个元素。
  • public E removeFirst():移除并返回此列表的第一个元素。
  • public E removeLast():移除并返回此列表的最后一个元素。
  • public E pop():从此列表所表示的堆栈处弹出一个元素。
  • public void push(E e):将元素推入此列表所表示的堆栈。
  • public boolean isEmpty():如果列表不包含元素,则返回true。

  
  1. private static void show01(){
  2. LinkedList<String>LinkedList=newLinkedList<String>();
  3. LinkedList.add("a");LinkedList.add("b");
  4. LinkedList.add("c");LinkedList.add("d");
  5. System.out.println("原始数组"+LinkedList);
  6. System.out.println(LinkedList.removeFirst());//移除第一个与pop()效果一样
  7. System.out.println(LinkedList.removeLast());
  8. LinkedList.addFirst("Java");//开头与push()效果一样
  9. LinkedList.addLast("promsing");//结尾与add()效果一样
  10. System.out.println(LinkedList);
  11. System.out.println(LinkedList.getFirst());//获取第一个
  12. System.out.println(LinkedList.getLast());//获取最后一个
  13. }

set接口

java.util.Set 接口和 java.util.List 接口一样,同样继承自 Collection 接口,它与 Collection 接口中的方法基本一致,并没有对 Collection 接口进行功能上的扩充,只是比 Collection 接口更加严格了。
 

HashSet集合

java.util.HashSet Set 接口的一个实现类, 它所存储的元素是不可重复的,并且元素都是无序的(即存取顺序不一致)。 java.util.HashSet 底层的实现其实是一个 java.util.HashMap 支持,
 

    
  1. public class HashSetDemo {
  2. public static void main(String[] args) {
  3. //创建 Set集合
  4. HashSet<String> set = new HashSet<String>();
  5. //添加元素
  6. set.add(new String("cba"));
  7. set.add("abc");
  8. set.add("bac");
  9. set.add("cba");
  10. //遍历
  11. for (String name : set) {
  12. System.out.print(name);
  13. }
  14. }
  15. }
  16. //输出结果为 cba abc bac

LinkedHashSet集合

HashSet 保证元素唯一,可是元素存放进去是没有顺序的,那么我们要保证有序就要用到LinkedHashSet集合。 它是链表和哈希表组合的一个数据存储结构。
 

  
  1. public class LinkedHashSetDemo {
  2. public static void main(String[] args) {
  3. Set<String> set = new LinkedHashSet<String>();
  4. set.add("bbb");
  5. set.add("aaa");
  6. set.add("abc");
  7. set.add("bbc");
  8. Iterator<String> it = set.iterator();
  9. while (it.hasNext()) {
  10. System.out.print(it.next());
  11. }
  12. }
  13. }
  14. //输出结果为 bbb aaa abc bbc

Collections:集合工具类

  • public static <T> boolean addAll(Collection<T> c, T... elements) :往集合中添加一些元素。
  • public static void shuffle(List<?> list) 打乱顺序 :打乱集合顺序。
  • public static <T> void sort(List<T> list) :将集合中元素按照默认规则排序。
  • public static <T> void sort(List<T> list,Comparator<? super T> ) :将集合中元素按照指定规则排序。

  
  1. public static void main (String[] args){
  2. ArrayList<String> list = new ArrayList<>();
  3. Collections.addAll(list,"a","b","c","d","e");//批量添加多个e
  4. System.out.println(list);
  5. Collections.shuffle(list);//打乱
  6. System.out.println(list);
  7. }

双列集合Map

Map接口中常用的方法


  
  1. public static void main(String[] args) {
  2. //创建 map对象
  3. HashMap<String, String> map = new HashMap<String, String>();
  4. //添加元素到集合
  5. map.put("黄晓明", "杨颖");
  6. map.put("文章", "马伊琍");
  7. map.put("邓超", "孙俪");
  8. System.out.println(map);
  9. //String remove(String key)
  10. System.out.println(map.remove("邓超"));
  11. System.out.println(map);
  12. // 想要查看 黄晓明的媳妇 是谁
  13. System.out.println(map.get("黄晓明"));
  14. System.out.println(map.get("邓超"));
  15. }

Map集合的两种遍历方式

一、使用set方法 通过键找值的方式


  
  1. public static void main(String[] args) {
  2. Map<String,Integer> map=new HashMap<>();
  3. map.put("郭靖",175);
  4. map.put("杨过",180);
  5. map.put("乔峰",183);
  6. map.put("无忌",177);
  7. //1、使用Map集合中的方法keySet()方法,把Map集合中所有的key取出来,存储到set集合中
  8. Set<String> set=map.keySet();
  9. //2、遍历set集合,获取Map集合中的每一个key
  10. //使用迭代器遍历set集合
  11. Iterator<String>iterator=set.iterator();
  12. while(iterator.hasNext()){
  13. String key=iterator.next();
  14. //3、通过Map集合中的方法get(),通过Key找到value
  15. Integer integer=map.get(key);//根据指定的键,找到对应的值
  16. System.out.println(key+","+integer);
  17. }
  18. System.out.println("增强For循环========");
  19. for(String key:set){
  20. Integer integer=map.get(key);//根据指定的键,找到对应的值
  21. System.out.println(key+","+integer);
  22. }
  23. }

二、使用Entry对象遍历map集合


  
  1. public static void main(String[] args) {
  2. Map<String,Integer> map=new HashMap<>();
  3. map.put("郭靖",175);
  4. map.put("杨过",180);
  5. map.put("乔峰",183);
  6. map.put("无忌",177);
  7. //一、使用Map集合中的entrySet()方法,把Map集合中多个entry对象取出来,存储到Set集合中
  8. Set<Map.Entry<String,Integer>>set=map.entrySet();
  9. //二、遍历Set集合,获取每一个entry对象
  10. Iterator<Map.Entry<String,Integer>>iterator=set.iterator();
  11. while(iterator.hasNext()){
  12. Map.Entry<String,Integer>entry=iterator.next();
  13. String key=entry.getKey();
  14. Integer value=entry.getValue();
  15. System.out.println(key+","+value);
  16. }
  17. System.out.println("增强For循环==============");
  18. for(Map.Entry<String,Integer>entry:set){
  19. }
  20. }

LinkedHashMap:存储有序-它是链表和哈希表组合的一个数据存储结构。


  
  1. public class LinkedHashMapDemo {
  2. public static void main(String[] args) {
  3. LinkedHashMap<String, String> map = new LinkedHashMap<String, String>();
  4. map.put("邓超", "孙俪");
  5. map.put("李晨", "范冰冰");
  6. map.put("刘德华", "朱丽倩");
  7. Set<Entry<String, String>> entrySet = map.entrySet();
  8. for (Entry<String, String> entry : entrySet) {
  9. System.out.println(entry.getKey() + " " + entry.getValue());
  10. }
  11. }
  12. }

创作不易,如果本篇博客对您有一定的帮助,大家记得留言+点赞哦。

文章来源: blog.csdn.net,作者:小小张自由—>张有博,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/promsing/article/details/112404457

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

评论(0

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

全部回复

上滑加载中

设置昵称

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

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

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