Java--集合2

发布时间:2024年01月20日

集合2

目录:

  • List

  • Map

  • Collections类

  • 泛型

本节课的学习主要讲了这四个方面的知识 知识点已经总结进代码里

代码如下

List
package com.haina365.day01.day15;

import java.util.*;

/*
List集合有两个实现类    一个是ArrayList    一个是LinkedList
ArrayList底层是数组
LinkedList底层是链表
通常情况是数组查询快 增删改慢 链表查询慢 增删改快
但是需要注意  具体问题具体分析
 */
public class ListTest {
    public static void main(String[] args) {
        //List集合 有序 可以重复
        List list = new LinkedList();
        list.add("zhangsan");
        list.add(123456);
        list.add(444.5);
        list.add(true);
        list.add('A');
        list.add("zhangsan");
        System.out.println(list);
        //List集合可以通过索引获取对应位置的数据 索引从0开始
        System.out.println(list.get(2));
        //修改指定索引位置的数据的值
        list.set(3,false);
        System.out.println(list);
        //在指定索引位置处添加一个数据
        list.add(1,"lisi");
        System.out.println(list);
        //当List集合中的数据有重复的时候 Collection中的remove方法只会删除第一个遇到的需要删除的数据
        //不会将数据全部删除
        list.remove("zhangsan");
        list.remove(1);//通过索引删除指定位置的数据
        System.out.println(list);

        //List集合遍历形式  四种方式
        //1 将集合转换为数组进行遍历
        Object[] o = list.toArray();
        for (Object obj:o){
            System.out.print(obj + " ");
        }
        //2 使用迭代器遍历
        Iterator it = list.iterator();
        while (it.hasNext()){
            Object o1 = it.next();
            System.out.print(o1 + " ");
        }
        //3 直接使用for循环遍历
        for (int i = 0;i < list.size();i++){
            System.out.print(list.get(i) + " ");
        }
        //4 for-each遍历
        for (Object o1:list){
            System.out.print(o1 + " ");
        }
        System.out.println();
        //集合转换为数组 set和list都可以 但是数组只能转换为List集合
        //将数组转换为List集合
        Integer[] a = {1,2,3,4,5,6};//要想成功使用需要将数组保存元素的类型定义成对象类型
        List list1 = Arrays.asList(a);
        System.out.println(list1);

    }
}
Map
package com.haina365.day01.day15;

import java.util.*;

public class MapTest {
    public static void main(String[] args) {
        //Map集合:以键值对(key-value)的形式保存数据
        //key的值不可以重复 value值可以重复
        Map map = new HashMap();
        //put方法 用于往map集合中添加数据的
        map.put("name", 123);
        map.put(12345,true);
        map.put(false,'a');
        map.put(true,'a');
        map.put('Z',345.8);
        map.put(555.7,"zhangsan");
        System.out.println(map);
        //key值相同的重复添加不会报错 但是会用最后一次的添加的数据 将前面的数据覆盖掉
        map.put(false,'E');
        System.out.println(map);
        //get方法是通过key值获取对应的value的值
        System.out.println(map.get(true));
        //remove方法是通过key的值删除对应value的值
        map.remove(true);
        System.out.println(map);
        //返回集合长度
        System.out.println(map.size());
        //map.clear();//清空集合中的数据
        //map集合的遍历形式 两种方式
        //1 将map转化成set
        Set mapSet = map.entrySet();
        Iterator it = mapSet.iterator();
        while (it.hasNext()){
            Map.Entry entry = (Map.Entry) it.next();
            //getkey获取键值对中key的值
            System.out.println("key值为"+entry.getKey());
            //getvalue获取键值对中value的值
            System.out.println("value值为"+entry.getValue());
        }
        //2 特殊情况
        Map map1 = new HashMap();
        for (int i = 0;i < 5;i++){
            map1.put("item" + i,"object" + i);
        }
        for (int i = 0;i < map1.size();i++){
            System.out.print(map1.get("item" + i) + " ");
        }
    }
}
Collections类
package com.haina365.day01.day15;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

//sort排序核心就是compareTo方法 如果返回值是正数 则表示两个对象交换位置
//否则返回负数或0 表示都不变
public class CollectionsTest {
    public static void main(String[] args) {
        //Collections类是一个提供了一系列操作集合的方法
        List list = new ArrayList();
//        list.add(1234);
//        list.add(43);
//        list.add(435);
//        list.add(345);
//        list.add(5667);
        list.add("zhangsan");
        list.add("lisi");
        list.add("wangwu");
        list.add("songliu");
        list.add("sunqi");
        System.out.println(list);
        //升序排序
        Collections.sort(list);
        System.out.println(list);
        //二分查找法 查到返回所以的位置
        System.out.println(Collections.binarySearch(list, "zhangsan"));
        //乱序排序
        Collections.shuffle(list);
        System.out.println(list);
        //倒叙排序
        Collections.reverse(list);
        System.out.println(list);
        //最大最小值
        System.out.println(Collections.max(list));
        System.out.println(Collections.min(list));
    }
}
泛型
public class GenericTest {
    public static void main(String[] args) {
        //泛型:控制往集合中添加数据的类型
        List<String> list = new ArrayList<>();
        list.add("张三");
        list.add("李四");
        list.add("王五");
        list.add("赵六");
        //添加了泛型之后 只能往集合中保存泛型类型的数据
        //list.add(123);
        Iterator<String> it = list.iterator();
        while (it.hasNext()){
            String s = it.next();
            System.out.println(s);
        }
        Map<String, Integer> map = new HashMap<>();
    }
}
泛型类
ublic class GenericDemo<T extends Exception> {
    public static void main(String[] args) {
        //extends 泛型只能写异常类的子类
        //设置上限
        GenericDemo<? extends RuntimeException> gd =
                new GenericDemo<ArrayIndexOutOfBoundsException>();
        //设置下限
        GenericDemo<? super RuntimeException> gd1 =
                new GenericDemo<Exception>();

    }
}
文章来源:https://blog.csdn.net/Arguan_/article/details/135696824
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。