java中集合概述总结

数组:原生的数组是固定的,删除元素不方便,长度是固定的,容量不够时还需要自己扩容。

而在现实中,数据是不断变化的,因此需要集合。

1.List接口及实现类

单列集合Collection接口下有ArrayList,LinkedList,Vector(线程安全的)。

ArrayList<E> arrayList = new ArrayList<>(); //E是指引用或包装类型
             arrayList.add(E e);//将指定元素e增加到此列表末尾
             arrayList.remove(2);//删除下标为2的元素
             arrayList.remove(Object o);//删除指定元素的第一次出现
             arraylist.clear();//清除所有元素
             arrayList.contains();//判断是否包含子串
             arrayList.ensureCapacity(int minCapacity);//增加容量
             arrayList.get();//返回指定位置的元素
             arrayList.indexOf();//返回指定元素首次出现的索引,从前往后找
             arrayList.lastIndexOf();//返回指定元素首次出现的索引,从后往前找
             arrayList.set(int index, E element);//用指定元素替换指定位置的元素
             arrayList.isEmpty();//判断集合是否为空

2.List接口集合迭代

(1)for循环遍历,要注意元素下标的改变适当调整

(2)增强for循环遍历(不能对元素进行修改)

for(E i: arrayList){
         System.out.println(i);
} 

(3)迭代器遍历

       Iterator<String> iterator = arrayList.iterator();

        while(iterator.hasNext()){ // 判断有没有下一个元素
            String item = iterator.next(); // 取出元素
            if(item.equals("c")){
                iterator.remove();  //使用迭代器方法删除元素
            }
        }

(4)ArrayList和LinkedList区别

LinkedList:查询慢,但在列表开头,中间,和末尾位置添加和删除元素效率更高

ArrayList:  中间添加删除慢,但是在列表末尾添加删除元素,需要频繁访问一个元素,效率高(5)List中有顺序且可以重复,Set中没有顺序且不可以重复。

接口下可以重复的有ArrayList,LinkedList,不可以重复的有HashSet,TreeSet

3.Set接口

Set接口继承了Collection接口

(1)Set中存储的元素是不可以重复的,也无序

(2)Set接口有俩个实现类 HashSet和TreeSet

HashSet:底层是哈希表+链表

TreeSet:如果需要进行排序,存储的对象必须实现Comparable接口

4.Set遍历方式

(1)增强for循环(2)迭代器遍历

5.Map

Map是一个散列表,它的存储方式是键值对(key-value)映射。

HashMap中的key不能重复,排列顺序不固定,可以存储一个为null的键

TreeMap中元素有顺序,但是key值必须实现Comparable接口

HashTable 不能存储为null的键

(1)Map接口常用方法

import java.util.HashMap; // 首先引入 HashMap 类
HashMap<Integer,String> hashMap = new HashMap<>();
                        hashMap.put(1,"Hello");//添加键值对
                        hashMap.remove(key);//删除键值对 key为键
                        hashMap.size();//计算元素的数量            
                         hashMap.contains(key);//判断是否存在指定的key对应的映射关系
                        hashMap.contains(value);//判断是否存在指定的值对应的映射关系
                        hashMap.get(key);//获取key对应的value
                        hashMap.isEmpty();//判断是否为空
                        
                        

(2)遍历

Set<String> keySet = map.keySet();

 //第一种:普遍使用,二次取值
      System.out.println("通过Map.keySet遍历key和value:");
      for (String key : keySet) {
       System.out.println("key= "+ key + " and value= " + map.get(key));
      }

 //推荐
       System.out.println("通过Map.entrySet遍历key和value");
       Set<Map.Entry<String, String>> entries = map.entrySet();
            for(Map.Entry<String, String> entry:entries){
       System.out.println("key= " + entry.getKey() + " and value= " + entry.getValue());
      }

//第三种
      System.out.println("通过Map.values()遍历所有的value,但不能遍历key");
      for (String v : map.values()) {
       System.out.println("value= " + v);
      }

6.Collection

Collection 接口 是单列集合的顶级接口,与数组Arrays类似,Collections提供了对集和排序、遍历等多种算法的实现

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值