今天开始我们学习Java高级的知识01

Java高级

集合(List、Set、Map)

在这里插入图片描述

虚线是接口,实线是类
List:继承Collection接口,有序可重复
Set:继承Collection接口,无序不可重复
Map:存储键值对,提供key到value的映射。key无序不可重复,value可重复

ArrayList

内存中分配连续的空间,遍历元素和随机访问效率较高
在这里插入图片描述

在这里插入图片描述

其他方法
// 使用 asList 方法将数组转换为 List
    List<String> list = Arrays.asList(array);
// 从列表中移除所有在toRemove列表中的元素
    ArrayList<String> toRemove = new ArrayList<>();
    ArrayList<String> list = new ArrayList<>();
    list.removeAll(toRemove);
//从列表中添加所有在arrList列表中的元素
    ArrayList<String> arrList = new ArrayList<>();
    ArrayList<String> list = new ArrayList<>();
    list.addremove(arrList);
    //指定位置添加元素,范围在size之前包含size
        list1.add(2,news4);
        for (News news : list1) {
            System.out.println(news.getName() + " " + news.getId());
        }
        System.out.println("----------------");
        //删除指定位置元素
        list1.remove(2);
        for (News news : list1) {
            System.out.println(news.getName() + " " + news.getId());
        }
        System.out.println("----------------");
        //判断元素是否存在
        System.out.println(list1.contains(news1));
        System.out.println("----------------");
        //获取元素的索引
        System.out.println("元素的索引是:"+list1.indexOf(news2));
        System.out.println("----------------");
        //获取索引位置的元素内容
        System.out.println("元素内容是:"+list1.get(1).getName());
        System.out.println("----------------");
        //返回集合中元素个数
        System.out.println("集合中元素个数是:"+list1.size());
        System.out.println("----------------");
        //修改
        list1.set(1,new News("鬼低语",2));
        //清空集合
        list1.clear();
        //判断集合是否为空
        System.out.println("清空后集合是否为空:"+list1.isEmpty());

LInkedList

set(index,value)修改指定下标内容
采用链表方式储存,插入、删除元素相比ArrayList较快
!

在这里插入图片描述

其他方法

list.offerFirst("D");
这行代码将字符串 "D" 添加到链表 list 的开头。offerFirst 是 LinkedList 特有的方法,用于在链表头部添加元素。

list.offerLast("E");
这行代码将字符串 "E" 添加到链表 list 的末尾。offerLast 也是 LinkedList 特有的方法,用于在链表尾部添加元素。

list.add(0, "F");
这行代码将字符串 "F" 添加到链表 list 的索引 0 位置。add(int index, E element)List 接口的方法,用于在指定位置插入元素。

list.peekFirst();
这行代码获取链表 list 的第一个元素,但不移除它。peekFirst 是 LinkedList 特有的方法,用于查看链表头部的元素。

list.peekLast();
这行代码获取链表 list 的最后一个元素,但不移除它。peekLast 是 LinkedList 特有的方法,用于查看链表尾部的元素。

list.pollFirst();
这行代码获取并移除链表 list 的第一个元素。pollFirst 是 LinkedList 特有的方法,用于移除并返回链表头部的元素。

list.pollLast();
这行代码获取并移除链表 list 的最后一个元素。pollLast 是 LinkedList 特有的方法,用于移除并返回链表尾部的元素。

list.removeFirstOccurrence("B");
这行代码移除链表 list 中第一次出现的字符串 "B"。removeFirstOccurrence 是 LinkedList 特有的方法,用于移除第一次出现的指定元素。

list.removeLastOccurrence("D");
这行代码移除链表 list 中最后一次出现的字符串 "D"。removeLastOccurrence 是 LinkedList 特有的方法,用于移除最后一次出现的指定元素。

HashSet

查找高效的集合,元素是无序的,非线程安全,创建一个Set集合需要指定泛型,没有索引,常用来去重。如果不指定泛型,则以第一个元素的类型作为泛型。
在这里插入图片描述

Map

在这里插入图片描述

getOrDefault() 是 java.util.Map 接口中定义的一个方法,它允许您以一种安全的方式从 Map 中获取值。如果键存在,则返回该键对应的值;如果键不存在,则返回一个默认值。
//合并两个Map,如果键相同,则对应值相加
Map<Integer, Integer> map1 = new HashMap<>();
Map<Integer, Integer> map2 = new HashMap<>();
map1.put(1, 5);
        map1.put(2, 7);
        map1.put(3, 8);
        map2.put(1, 3);
        map2.put(3, 9);
        map2.put(2, 4);
        map2.put(5, 5);
Map<Integer, Integer> result = new HashMap<>(map1);
        //getOrDefault方法,如果map中不存在该键,则返回默认值,这里默认值是0,如果map1中存在该键,返回改建对应的值+map2中对应的值,否则返回map2中对应的值
        for (Map.Entry<Integer, Integer> entry : map2.entrySet()) {
            result.put(entry.getKey(), result.getOrDefault(entry.getKey(), 0) + entry.getValue());
        }
        System.out.println("合并后的Map:");
        for (Map.Entry<Integer, Integer> entry : result.entrySet()) {
            System.out.println("Key: " + entry.getKey() + ", Value: " + entry.getValue());
        }
另外一些方法
public static void main(String[] args) {
        Map<String, String> map = new HashMap<>();
        map.put("US", "美国");
        map.put("RU","俄罗斯");
        map.put("CN","中国");
        map.put("JP","日本");
        //通过键获取对应的值
        System.out.println(map.get("RU"));
        //size()方法获取Map的大小
        System.out.println(map.size());
        //containsKey()方法判断Map是否包含指定键
        System.out.println(map.containsKey("JP"));
        //containsValue()方法判断Map是否包含指定值
        System.out.println(map.containsValue("日本"));
        //isEmpty()方法判断Map是否为空
        System.out.println(map.isEmpty());
        //putAll()方法添加多个键值对
        Map<String, String> map2 = new HashMap<>();
        map2.putAll(map);
        System.out.println(map2.get("RU"));
        //remove()方法删除指定键值对
        map.remove("JP");
        System.out.println(map.get("JP"));
        //keySet()方法获取Map的所有键,需要用Set类型接收
        System.out.println(map.keySet());
        //values()方法获取Map的所有值,需要用Collection类型接收
        System.out.println(map.values());
        //clear()方法清空Map
        map.clear();
        System.out.println(map.isEmpty());


    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值