java中的集合框架

1.集合不能直接存储基本数据类型,另外集合也不能直接存储java对象,集合当中存储的都是java对象的内存地址。(或者说集合中存储的是引用。)
list.add(100); //自动装箱Integer
注意:
集合在java中本身是一个容器,是一个对象。
集合中任何时候存储的都是“引用”。

2.集合在java JDK中哪个包下?
java.util.*;
所有的集合类和集合接口都在java.util包下。

3.在java中集合分为两大类:
一类是单个方式存储元素:
单个方式存储元素,这一类集合中超级父接口:java.util.Collection;
一类是以键值对儿的方式存储元素:
以键值对的方式存储元素,这一类集合中超级父接口:java.util.Map;

4.集合的继承结构图(常用的实现类)
在这里插入图片描述
在这里插入图片描述
5.Collection中的contains方法
boolean contains(Object o)(判断集合是否包含元素o):这个方法底层调用了equals方法进行比较,我们可以通过以下代码对这个方法有更深的了解:

import java.util.ArrayList;
import java.util.Collection;

/*boolean contains(Object o)方法深入*/
public class CollectionTest03 {
    public static void main(String[] args) {
        Collection c = new ArrayList();
        String str1 = "hello";
        String str2 = "hello";
        c.add(str1);
        System.out.println("集合c里面包含str2吗:" + (c.contains(str2) ? "包含" : "不包含"));//结果是包含,因为String重写了equals方法,这里相当于str1.equals(str2)
//        构建User对象
        User u1 = new User("张三");
        User u2 = new User("张三");
        c.add(u1);
        System.out.println("集合c里面包含u2吗:" + (c.contains(u2) ? "包含" : "不包含"));//结果是不包含,因为User没有重写equals方法,比较的是内存地址
    }
}
/*自定义一个User类*/
class User {
    private String name;

    public User(String name) {
        this.name = name;
    }
}

6.Collection中的remove方法
boolean remove(Object o) (删除集合中某个元素):底层也是调用了equals方法比较,然后删除。

7.Collection中的iterator方法(从父接口Iterable继承过来的)
该方法返回一个迭代器Iterator对象,一般通过调用它的方法hasNext(判断是否还有下一个元素)和next(让迭代器指针前进一位,并将指向的引用返回,最开始迭代指针指向第一个元素的前面)遍历集合,需要注意的是,集合结构发生改变,迭代器必须重新获取,否则会报如下异常java.util.ConcurrentModificationException

import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;

public class CollectionTest04 {
    public static void main(String[] args) {
        Collection c = new ArrayList();
        c.add("abc");
        c.add("def");
        c.add("xyz");
        Iterator it = c.iterator();
        while(it.hasNext()) {
            Object obj = it.next();
//            删除元素之后,集合结构发生改变,应该重新获取迭代器
//            但是在这里,下一次循环的时候没有重新获取迭代器,所以报java.util.ConcurrentModificationException异常
//            c.remove(obj);//直接通过集合去删除元素,没有通知迭代器(导致迭代器的快照和原集合状态不同)
//            使用迭代器中的remove方法来删除
            it.remove();//删除迭代器现在指向的元素,在迭代器和集合中一起删去,保证了两者装态相同,不会出现异常
            System.out.println(obj);
            System.out.println("目前集合中的元素个数:" + c.size());
        }
    }
}

8.注意:HashSet中的元素实际存放到了HashMap中的key里

public boolean add(E e) {
        return map.put(e, PRESENT)==null;
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java 集合框架主要分为两个部分:`java.util` 和 `java.util.concurrent`。其,`java.util` 包含了大部分的集合框架,而 `java.util.concurrent` 则包含了一些并发集合框架。 在 `java.util` 包集合框架主要分为两类:`Collection` 和 `Map`。`Collection` 接口表示一组对象,它是所有集合框架的基础接口,提供了对集合元素的基本操作,例如添加、删除、查找等。`Map` 接口则表示一组键值对,提供了根据键来查找值的操作。 在 `Collection` 接口下,Java 常用的集合框架包括: 1. `List`:有序列表,元素可以重复。常用的实现类有 `ArrayList`、`LinkedList` 和 `Vector`。 2. `Set`:无序集合,元素不可以重复。常用的实现类有 `HashSet`、`LinkedHashSet` 和 `TreeSet`。 3. `Queue`:队列,元素按照一定的顺序进行排列,常用的实现类有 `LinkedList` 和 `PriorityQueue`。 4. `Deque`:双端队列,可以在队列的两端进行插入和删除操作,常用的实现类有 `ArrayDeque` 和 `LinkedList`。 在 `Map` 接口下,Java 常用的集合框架包括: 1. `HashMap`:无序键值对集合,键不可以重复。 2. `LinkedHashMap`:有序键值对集合,键不可以重复。 3. `TreeMap`:有序键值对集合,键可以按照自然顺序进行排序。 4. `Hashtable`:与 `HashMap` 类似,但是是线程安全的,不推荐使用。 总之,Java 集合框架提供了丰富的数据结构和算法,可以大大简化程序的开发,提高程序的效率和可维护性。需要根据具体的需求来选择合适的集合框架和实现类。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值