List,Map,Set集合

一:List集合

List集合特点:
元素有序的,且可重复。(元素有序不是指,我们存进Lits集合中的什么1,3,7,6他给我们从小到大,
或者从大到小这样子,所谓的有序是我们该集合有下标,下标从0开始,
然后我们按照什么顺序增加到list集合的,那么他就是什么样子的顺序)。 

List集合遍历:
根据下标,foreach,迭代器遍历数据。

 ArrayList集合是继承List的集合的,所以Lits集合具备的一些特点,ArrayList也是具备的。

ArrayList集合的特点:
简单数据结构,超出容量会自动扩容,也是和List集合的扩容是一样的。
ArrayList集合动态数组,为什么说是动态数组,因为数组一般能存放多少数据,一般都是定好的,而ArrayList数组是可以根据数据扩容的,所以是一个动态的数组。
内部实现是基于基础的对象数组的,也就是ArrayList集合存放的是对象。
ArrayList集合不适合随机的删除和增加。

  使用迭代器进行删除集合中的数据,首先不会存在数据想要删除的数据,没有被删除,或者多删,
报错这种情况不会出现,使用迭代器不报错的原因,是因为迭代器可以维持那两个数的相等,所以不会像foreach出现那种情况。

     @Test
      public void test05() {
          Iterator<Integer> it=list.iterator();
          while(it.hasNext()) {
              Integer vaule=it.next();
              if(vaule==3) {
                  it.remove();
              }
          }
      }
    得到的结果:[1, 2, 4, 5, 6] 

二:Set集合
1.set

集合元素有序不重复,创建set集合 Set set = new HashSet();

循环遍历方法(3种):跟collection相同, 但不能使用ListIterator对象(不是List或它的实现 类),也不能用for循环遍历,没有下标和get方法

2.HashSet

去重的原理 : 根据元素的hashCode确定在集合中的位置,如果位置上不存在元素,则直接存入;
                       如果位置上存在数据,则调用equals方法进行比较。如果返回值是true, 则不存入新                         的元素;如果返回值是false, 则存入新的元素

无序不重复:按照数据的hashCode的值进行存储上的排序,和存入的顺序无关


HashSet特点:
1.它存储唯一元素并允许空值,依据对象的hashcode来确定该元素是否存在

2. 由HashMap支持

3. 不保持插入顺序

4. 非线程安全

5. 性能参数:初始容量,负载因子,默认值: 初始容量16,负载因子0.75,示例:new HashSet<>(20, 0.5f);


三:Map
1.map集合是什么?
​ Map集合和Collection集合没有任何关系。Collection集合是以单个方式存储元素的,而Map集合是以键值对的方式存储元素,所有Map集合的Key是无序不可重复的,key和value都是引用数据类型,存的都是内存的地址。

​ Map集合的实现类主要为HashMap、HashTable。子接口有一个SortedMap,SortedMap有一个TreeMap实现类。

2.Map集合常用实现类
HashMap
​ HashMap底层采用哈希表的数据结构,非线程安全的

二、Map接口常用方法
1.clear
​ 方法全称为:void clear(),移除map里所有的映射关系,使用方法如下:

public static void main(String[] args) {
    Map map=new HashMap();
    map.put(1,"张三");
    map.put(2,"李四");
    map.put(3,"王麻子");
    map.clear();
}
2.containsKey
​ 方法全称为:boolean containsKey(Object key),containsKey底层调用了equals方法,查询key中是否包含某个元素,使用方法如下:

public static void main(String[] args) {
    Map map=new HashMap();
    map.put(1,"张三");
    map.put(2,"李四");
    map.put(3,"王麻子");
    boolean res = map.containsKey(3);
    System.out.println(res);
}
3.get
​ 方法全称为:Object get(Object key),查询key对应的value值,返回value值,使用方法如下:

public static void main(String[] args) {
    Map map=new HashMap();
    map.put(1,"张三");
    map.put(2,"李四");
    map.put(3,"王麻子");
    Object o = map.get(3);
    System.out.println(o);
}
4.keySet
​ 方法全称为:Set keySet(),用来获取map集合中所有的key,并将所有的key中存入set集合中,使用方法如下:

public static void main(String[] args) {
    Map map=new HashMap();
    map.put(1,"张三");
    map.put(2,"李四");
    map.put(3,"王麻子");
    Set set = map.keySet();
    for (Object o : set) {
        System.out.println(o);
    }
}
5.put
​ 方法全称为:put(Object key,Object value),给map集合中添加键值对,使用方法如下:

public static void main(String[] args) {
    Map map=new HashMap();
    map.put(1,"张三");
    map.put(2,"李四");
    map.put(3,"王麻子");
}
6.remove
​ 方法全称为:remove(),利用key删除map集合中的元素,使用方法如下:

public static void main(String[] args) {
    Map map=new HashMap();
    map.put(1,"张三");
    map.put(2,"李四");
    map.put(3,"王麻子");
    map.remove(3);
}
7.size
​ 方法全称为:int size(),获取map集合中键值对的个数,使用方法如下:

public static void main(String[] args) {
    Map map=new HashMap();
    map.put(1,"张三");
    map.put(2,"李四");
    map.put(3,"王麻子");
    int i = map.size();
    System.out.println(i);
}
8.values
​ 方法全称为:Collection values(),获取map集合中所有的value值,并将value值存入Collection集合中返回,使用方法如下:

public static void main(String[] args) {
    Map map=new HashMap();
    map.put(1,"张三");
    map.put(2,"李四");
    map.put(3,"王麻子");
    Collection values = map.values();
    //Collection遍历也可用迭代和获取下标的方法
    for (Object value : values) {
        System.out.println(value);
    }
}
9.map集合的遍历
​ 第一种方式:

map集合不能迭代,也不能使用foreach,所有只能先获取去所有的key,遍历key然后通过key获取每一个key和value
第二种方式:

​ 把map集合全部转换成set集合,set集合中元素的类型是Map.Entry,取出Map.entry对象之后,可以获取到key和value

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值