Java学习——Java集合类概述

Set、 Map、 List

       java.util包中提供了一些集合类,这些集合类又被称为容器,提到容器不难想到数组.

1.集合类与数组的不同之处:
  • 数组的长度是固定的,集合的长度是可变的;
  • 数组用来存放一些基本类型的数据,集合用来存放对象的引用

在这里插入图片描述

2.Collection接口的方法
add(E e) # 将指定的对象添加到该集合中
remove(Object o) #将指定的对象从当前集合中移出
isEmpty()  #返回Boolean值,用于判断当前集合是否为空
iterator()   #返回在此Collection的元素上进行迭代的迭代器,用于遍历集合中的对象
size()     #返回int类型的值,获取该集合元素的个数
代码实现
public class Muster {
public static void main(String[] args) {
        List<String> list = new ArrayList<>();  //实例化集合对象
        list.add("a");					//向集合中添加数据
        list.add("b");
        list.add("c");
        Iterator<String> iterator = list.iterator();	//创建迭代器
        while (iterator.hasNext()){             //判断是否有下一个元素
            String str = (String)iterator.next(); //获取集合中元素
            //  Iterator的next方法返回的是  Object。
            System.out.println(str);	
        }
    }
}
3.List集合(元素允许重复)
3.1 List接口
get(int index):获得指定索引位置的元素
set(int index,Object obj):将集合指定索引位置的对象修改为指定的对象
3.2List接口的实现类
* ArrayList类实现可变数组,可保存所有的元素,包括null,可根据索引进行快速访问
	缺点:指定位置插入,删除元素慢,
* LinkedList类用链表结构保存对象,插入删除对象快,,随机访问慢
接口实现代码:
		List<E> list = new ArrayList<>(); //E是java数据类型 Int 、String
        List<E> list = new LinkedList<>()
       注意:跟数组一样,集合的索引是从0开始
代码实现 (随机数用法)
public static void main(String[] args) {
    List<String> list = new ArrayList<>();//创建集合对象
    list.add("a");
    list.add("b");                  //向集合中添加元素
    list.add("c");
    int  i = (int) (Math.random() * list.size()); //获取0~2之间的随机数
    System.out.println(list.get(i));
    list.remove(2);         //移除索引为2的元素,采用remove方法
    for (int j = 0;j<list.size(); j++) {    //遍历集合元素
        System.out.println(list.get(j));
    }
}
4.set集合(不允许重复对象)

实现类:

  • HashSet
  • TreeSet
5.Map集合

  Map集合没有继承Connection接口,其提供key,value的映射,key值唯一。

5.1Map接口
接口中常用方法:
	put(K key ,V value) :向集合中添加指定的key 与 value的映射关系
	containKey(Object key) :如果此映射包含指定key的映射关系,则返回true
	containsValue(Object value) :如果此映射将一个或多个key映射到指定值,则返回true
	get(Object key) :如果存在指定的key值,则返回对应的value,否则返回null
	keyset():返回该对象中的所有key对象形成的Set集合
	values():返回该对象中的所有值对象形成的Collection集合
5.2Map接口的实现类
  • HashMap(建议使用)
         通过hash表对其内部映射关系进行快速查找,可以使用null值和null键,不保证映射的顺序。

  • TreeMap
         实现map和java.util.SortedMap接口,集合中映射关系有一定顺序,不允许键对象是null,添加删除等时性能差于HashMap。

代码实现
public static void main(String[] args) {
    Map<String, String> map = new HashMap<>(); //创建map实例
    map.put("01","李四");         //向集合中添加元素
    map.put("02", "王五");        
    System.out.println("key集合中的元素为:");
    Set<String> set = map.keySet(); //构建map集合中所有key对象的集合
    Iterator<String> iterator = set.iterator(); //创建集合迭代器
    while (iterator.hasNext()){         //遍历,hasNext方法判断下一个元素是否存在
        System.out.println(iterator.next()); //获取集合中的元素
    }
    System.out.println("values合中的元素为:");
    Collection<String> values = map.values();
    iterator = values.iterator();
    while (iterator.hasNext()){
            System.out.println(iterator.next());
    }
}
代码实现(HashMap和TreeMap)
    public static void main(String[] args) {
    Student student = new Student("张三", "84");
    Student student1 = new Student("李四", "12");
    Student student2 = new Student("王五", "41");
    Student student3 = new Student("赵六", "23");
    System.out.println("HashMap实现:");
    HashMap<String, String> hashMap = new HashMap<>();//创建map实例
    hashMap.put(student.getAge(),student.getName());//添加数据
    hashMap.put(student1.getAge(),student1.getName());
    hashMap.put(student2.getAge(),student2.getName());
    hashMap.put(student3.getAge(),student3.getName());
    Set<String> keySet = hashMap.keySet();   //获取map集合中的key集合对象
    Iterator<String> iterator = keySet.iterator();
    while (iterator.hasNext()) {            //遍历map集合
        String key = (String)iterator.next();
        String value = hashMap.get(key);
        System.out.println("age:"+key+"---" +"name:" + value);

    }
    System.out.println("TreeMap实现:");
    TreeMap<String, String> treeMap = new TreeMap<>();  //创建TreeMap集合对象
    treeMap.putAll(hashMap);              //添加数据
    Iterator<String> iterator1 = treeMap.keySet().iterator(); //创建迭代器
    while (iterator1.hasNext()) {         //遍历map集合
        String str = iterator1.next();    //获取key
        String name = treeMap.get(str);   //获取value
        System.out.println("age:" + str +"---"+ "name:"+name);
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Janson666

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值