java基础-集合类总结

由于数组具有固定的长度,用来存放基本类型,java使用类库提供了一套完整的容器类来解决这个问题,基本的类型有:List,Set,Map和Queue,称为集合类。在java.util包中,用来存放对象的引用。

一.Collection接口

Collection接口通常不能直接使用,但接口提供了增删以及管理数据库的方法。List和Set是继承了Collection接口,所以方法是通用的。
常用的方法:
add(E e):添加指定的对象
remove(Object o):移除
isEmpty():判断是否为空
iterator():迭代器,用于遍历集合的对象
size():元素的个数

Iterator迭代器:

用于遍历集合类

Collection <String> list=new ArrayList<>();
list.add("a");
list.add("b");
Iterator <String> it =list.iterater();
while(it.hasNext()){
system.out.printLn((String)it.next());
}
//注意:it.next()方法返回的是Object()对象,要进行类型转换

1.List接口

List接口继承了Collection接口,包含了其所有方法可以通过索引(从0)来访问集合的元素
特点:可以重复,是有序的,元素的顺序就是插入的顺序
还有两个非常重要的方法:
get(int index):通过索引获取元素
set(int index,Object o):指定索引的对象修改成指定的对象

实现类有ArrayList和LinkedList:

List<E>list=new ArrayList<>();
Lsit<E>list2=new LinkedList<>();
//E表示泛型,可以是合法的java的数据类型。增加集合类的安全性
//除了Iterator 可以根据索引来遍历"
for(int i;i<list.size();i++){
system.out.print(list.get(i));
}

ArrayList:
实现了基于动态数组的数据结构,允许为null,可以根据索引对集合进行快速查询访问,但是增删效率比较低
LinkedList:
采用的是链表的结构保存对象的数据结构,增删效率较快,查询随机访问的效率较低

2.Set接口

Set接口继承了Collection接口,不按照特定的顺序排列,只是简单的把对象加入。但是不能包含重复的对象;set也包含了conllection接口的所有方法。

两种实现类:HashSet TreeSet

HashSet:实现了Set接口,由哈希表支持(实际上是一个HashMap的实例)。不保证Set的迭代顺序不变,允许为Null元素
TreeSet:实现了Set接口,还实现了java.util.SortedSet接口,因此在遍历的时候按照自然顺序递增排序,也可以按照指定的比较器对集合中对象排序

TreeSet增加的方法:

first()/last():返回第一个/最后一个元素
comparator():返回Set中元素进行排序的比较器,如果按照自然顺序,则返回null
headSet(E toElement):返回一个新的Set集合,包含toElement(不包含)之前的所有元素
**subSet(E fromElement,E toElement):**fromElement(不包含)与toElement(包含)之间的元素
tailSet(E fromElement):返回一个新的Set集合,包含fromElement(包含)之后的所有元素

二.Map集合

Map接口没有继承Collection接口,提供的是key到value的映射,键值对。允许value是null,没有个数限制。
key具有唯一性,每个可以只能映射一个value,key还决定了存储对象的位置。Map也支持泛型Map

1.常用的方法:

put(K key,V value):添加
containsKey(Object key):如果包含key,返回true
containsValue(Object Value):如果包含Value,返回true
get(Object key):如果存在Key则返回对应的value,否则返回null
keySet():返回集合中所有key对象形成的Set集合
values():返回集合中所有value对象形成的Collection集合

2.Map接口的实现类有:HashMap TreeMap

一般建议使用HashMap类来实现Map集合,因为HashMap类实现的Map集合增删的效率更高。HashMap是基于哈希表的Map接口的实现。通过哈希码对内部的映射关系进行快速的查找,若希望Map集合中的对象也存在一定的吮吸,则使用TreeMap来实现Map类。
HashMap
基于希哈表的Map接口的实现,允许使用null键和null值;不保证顺序不变
TreeMap
不仅实现了Map接口,还实现了java.util.SortedMap,因此集合中的元素具有一定的顺序,不允许为null值,增删的时候效率比HashMap的性能差。
可以通过HashMap类来创建一个Map,当需要顺序输出的时候,在创建一个TreeMap实例,实现把元素顺序的输出

3.Map的遍历方法:

import java.util.*;

public class Test{
     public static void main(String[] args) {
      Map<String, String> map = new HashMap<String, String>();
      map.put("1", "value1");
      map.put("2", "value2");
      map.put("3", "value3");

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

      //第二种
      System.out.println("通过Map.entrySet使用iterator遍历key和value:");
      Iterator<Map.Entry<String, String>> it = map.entrySet().iterator();
      while (it.hasNext()) {
       Map.Entry<String, String> entry = it.next();
       System.out.println("key= " + entry.getKey() + " and value= " + entry.getValue());
      }

      //第三种:推荐,尤其是容量大时
      System.out.println("通过Map.entrySet遍历key和value");
      for (Map.Entry<String, String> entry : map.entrySet()) {
       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);
      }
     }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值