java集合之集合基础

Java集合类简介

java中集合主要包括:Set、List、Map、Queue。其中Set是一种无序的结构,不允许有重复的元素。List是一种有序的结构,允许有重复的元素。Map是一种键值对的结构,用来存储键值对之间的关系,Map中的key不允许重复。Queue是一种队列结构,符合先进先出的特性。

java集合与数组的关系

1.数组中存储的可以是对象也可以是基本类型的值,而集合中存储的都是对象,基本数据类型的变量需要转换成对应的包装类才可以存储。
2.数组的长度在创建时就被指定好了,且之后不可以改变。而集合的长度可以更改,以ArrayList为例,就会在长度不够时,增加一倍的当前长度。

Java集合类之间的继承关系

set、Queue、List都是继承自Collection。
在这里插入图片描述
而HashMap、TreeMap都是继承自Map。
在这里插入图片描述

Collection简介

Collection中包含很多方法,可以看出Set与Collection的方法其实都是一样的。只不过add方法不同,因为Set不允许存在相同的元素。这里要记住一点,我们在使用的时候可能用add,contains比较多,但是不要忘记set也同样有size方法可以获取长度。
在这里插入图片描述

迭代器(值得再看一下例子)

继续简单讲一下迭代器。

Iterator接口中主要定义了2个方法,使用起来比较简单,但要注意一点,集合元素的值传给了迭代变量。仅仅传递了对象引用,保存的仅仅是指向对象内存空间的地址。
在这里插入图片描述
以下边的例子可以更好地理解什么是仅仅传递了对象引用,

public class IteratorExample {
  public static void main(String[] args) {
            List<MyObject> list = new ArrayList<>();
            for (int i = 0; i < 10; i++) {
                list.add(new MyObject(i));
            }

            System.out.println(list.toString());

            Iterator<MyObject> iterator = list.iterator();//集合元素的值传给了迭代变量,仅仅传递了对象引用。保存的仅仅是指向对象内存空间的地址
            while (iterator.hasNext()) {
                MyObject next = iterator.next();
                next.num = 99;
            }

            System.out.println(list.toString());
    }
    static class MyObject {
        int num;

        MyObject(int num) {
            this.num = num;
        }

        @Override
        public String toString() {
            return String.valueOf(num);
        }
    }
}

输出为:

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

[99, 99, 99, 99, 99, 99, 99, 99, 99, 99]

List简介

List继承自Collection,List允许存储重复的元素。集合中每个元素都有其对应的顺序索引,可以通过索引来访问指定位置的集合元素。

相应的,List中也添加了一些基于索引位置的方法。其中用的比较多的就是get,remove,indexOf。

void add(int index, Object element): 在列表的指定位置插入指定元素(可选操作)。

boolean addAll(int index, Collection<? extends E> c) : 将集合c 中的所有元素都插入到列表中的指定位置index处。

Object get(index): 返回列表中指定位置的元素。

int indexOf(Object o): 返回此列表中第一次出现的指定元素的索引;如果此列表不包含该元素,则返回 -1int lastIndexOf(Object o): 返回此列表中最后出现的指定元素的索引;如果列表不包含此元素,则返回 -1。

Object remove(int index): 移除列表中指定位置的元素。

Object set(int index, Object element): 用指定元素替换列表中指定位置的元素。

List subList(int fromIndex, int toIndex): 返回列表中指定的 fromIndex(包括 )和 toIndex(不包括)之间的所有集合元素组成的子集。

Object[] toArray(): 返回按适当顺序包含列表中的所有元素的数组(从第一个元素到最后一个元素)。

以及我们经常使用的方法:

void sort(Comparator c): 根据Comparator参数对List集合的元素排序。

Queue简介

队列核心就是先进先出的结构,具体就是先进入(offer)队列的会率先出(poll)队列。注意:队列不允许随机访问队列中的元素。

常用函数如下。
在这里插入图片描述

Map简介

Map总是成对的存储键值,因此Map中存储的是两组数据,而存储key的结构是Set,存储value的类似于List。
在这里插入图片描述

与Set集合的关系(值得再看一下)

如果把Map里的所有key放在一起看,它们就组成了一个Set集合(所有的key没有顺序,key与key之间不能重复),实际上Map确实包含了一个keySet()方法,用户返回Map里所有key组成的Set集合。

与List集合的关系(值得再看一下)

如果把Map里的所有value放在一起来看,它们又非常类似于一个List:元素与元素之间可以重复,每个元素可以根据索引来查找,只是Map中索引不再使用整数值,而是以另外一个对象作为索引

主要方法

我们这里最常用的就是containsKey(判断是否有该key的映射关系),get(获取该key所映射的value值),put(存储进map中一对key-value映射关系),isEmpty(map中是否存在映射)。我们偶尔也想获取整个map中的所有key(keySet()),我们也会使用remove(Object key),但要注意这里的remove是删去了当前key与value的映射。
在这里插入图片描述
我们有时候想要遍历整个map,我们就需要借助entrySet方法来获取一个Set,进而遍历Map,但获取的Set中数据类型为Map.Entry<K,V>。

我们先来看下Map的内部类Entry所包含的一些方法,通过getKey和getValue就可以获取Map中的对应键值对关系。
在这里插入图片描述
我们看一下实际代码:

 public static void map(){
        Map<Integer,String>map = new HashMap<>();
        map.put(1,"one");
        map.put(2,"two");
        map.put(3,"three");
        Set<Map.Entry<Integer,String>>set = map.entrySet();
        for (Map.Entry<Integer,String>e:set){
            System.out.println("key:"+e.getKey()+",value:"+e.getValue());
        }
    }

参考链接

android_interview

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java集合Java编程中非常重要的一部分,它提供了一种方便的方式来处理一组对象。Java集合框架包括List、Set、Map等接口和实现它们的类。下面是Java集合基础知识的介绍: 1. List接口:List是一个有序的集合,它可以包含重复的元素。List接口的常用实现类有ArrayList和LinkedList。其中,ArrayList是一个动态数组,它可以自动扩容以容纳更多的元素;而LinkedList是一个双向链表,它可以快速地在列表中插入或删除元素。 2. Set接口:Set是一个不允许重复元素的集合。Set接口的常用实现类有HashSet和TreeSet。其中,HashSet是一个基于哈希表的实现,它可以快速地查找元素;而TreeSet是一个基于红黑树的实现,它可以对元素进行排序。 3. Map接口:Map是一个键值对的集合,它允许使用键来查找值。Map接口的常用实现类有HashMap和TreeMap。其中,HashMap是一个基于哈希表的实现,它可以快速地查找键值对;而TreeMap是一个基于红黑树的实现,它可以对键进行排序。 下面是一个示例代码,演示了如何使用ArrayList集合存储学生的成绩,并遍历这个集合: ```java // 创建一个ArrayList集合,向这个集合中存入学生的成绩 ArrayList<Integer> al = new ArrayList<Integer>(); al.add(78); al.add(67); // 对集合遍历 // 方式1 for (Object obj : al) { System.out.println(obj);} // 方式2 for (Integer i : al) { System.out.println(i); } ```

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值