当前位置: 首页 > news >正文

Java语法-集合

Java语法

Day19

晨考

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

Collections工具类

/*
Collection  集合工具类   此类中的方法全部为静态方法   此类种提供了用于操作集合的各种方法

swap(List<?> list,int i,int j)  交换指定位置的集合中的元素
sort(List<T> list,Comparator<? super T> c) 根据指定的比较器引起的顺序对指定的列表进行排序
reverse(List<?> list)  反转指定列表中元素的顺序。
replaceAll(List<T> list, T oldVal,T newVal) 将列表中一个指定值的所有出现替换为另一个
min(Collection<? extends T> coll)  根据其元素的  自然顺序返回给定集合的最小元素
fill(List<? super T> list, T obj)   用指定的元素代替指定列表的所有元素
binarySearch(List<? extends Comparable<? super T>> list,T key)  使用二叉搜索算法搜索指定对象的
*/
public class TestCollections {
    public static void main(String[] args){
        List<Integer> list = new ArrayList<>();
        
        list.add(125);
        list.add(896);
        list.add(666);
        list.add(258);
        list.add(321);
        
        Collections.sort(list);
        
        for(Integer integer : list){
            System.out.println("integer = " + integer);
        }
        
        System.out.println("-----------------------------------------");
        
        int index = Collection.binarySearch(list,666);
        
        System.out.println("index = " + index);
        System.out.println("-----------------------------------------");
     
        // 获取集合中最大元素  要求元素必须可以比较大小 即  实现Comparable接口  或者  定义Comparator实现类
        Integer max = Collections.max(list);
        
        System.out.println("max = " + max);
        
        System.out.println("-----------------------------------------");
        
        Integer min = Collections.min(list);
        System.out.println("min = " + min);
        
        System.out.println("-----------------------------------------");
        // 交换指定位置的元素
        Collections.swap(list,0,3);
        
        for(Integer integer : list){
            System.out.println("integer = " + integer);
        }
        
        System.out.println("-----------------------------------------");
        // 2使用指定元素填充集合
        Collections.fill(list,999);
        
        for(Integer integer : list){
            System.out.println("integer = " + integer);
        }
        
    }
}

泛型

/*
泛型: 用于统一数据类型

泛型可以使用的位置:类、接口、形参、返回值、属性

自定义泛型,如何书写(泛型的名称可以使用任何单词 字母 大小写都可以 但是我们只推荐使用一些有公认的含义的一些大写字母)

K    key      键
V    Value		值
T    Type		类型
E	Element		元素
R	Return		返回值
P	Parameter	参数
N	Number		数值  表示范围为Number及其子类


泛型初始化的时机:
1.类声明的泛型   是随着当前类创建对象初始化
2.接口声明的泛型  是随着实现类实现接口的初始化
*/
public class TestGenericType {
    
}

class A<T>{
    public void m1(T t){
        System.out.println("t = " + t);
    }
    
    public T m2(){
        return null;
    }
}

class TestA{
    public static void main(String[] args){
        A a1 = new A();
        a1.m1("abc");
        System.out.println(a1.m2());
        
        
        A<Integer> a2 = new A<Integer>();
        a2.m1(100);
        System.out.println(a2.m2());
        
        A<Double> a3 = new A<Double>();
        a3.m1(100.5);
        System.out.println(a3.m2());
        
    }
}

interface C<R,P>{
    R m1(P p);
}

class C1 implements C<Boolean,String>{
    @Override
    public Boolean m1(String s){
        return "abc".startsWith("a");
    }
}

class C2 implements C<Double,String>{
    @Override
    public Double m1(String s){
        return Double.parseDouble(s);
    }
}

class TestC{
    public static void main(String[] args){
        C1 c1 = new C1();
        System.out.println(c1.m1("abc"));
        
        C2 c2 = new C2();
        System.out.println(c2.m1("123"));
    }
}
class Animal{}
class Pet extends Animal{}
class Dog extends Pet{}
class Cat extends Pet{}

class TestPet{
    public static void m1(List<Pet> list){}
    
    // 泛型是不存在类型自动提升 
    // 要求形参为Pet类型  或者  Pet类的任意子类类型
    // ? extends 父类  :  表示泛型可以为父类  以及  父类的任何子类类型
    // Pet类的父类可以吗?
    public static void m2(List<? extends Pet> list){}
    
    /*
    要求:泛型为Dog  以及 Dog类的任何父类
    ? super  子类: 表示反省可以为子类  以及  任何子类的父类
    表示设置泛型的下限  没有上限
    */
    public static void main(String[] args){
        Vector<Pet> list1 = new Vector();
        ArrayList<Pet> list2 = new ArrayList<>();
        LinkedList<Pet> list3 = new LinkedList<>();
        m1(list1);
        m1(list2);
        m1(list3);
        
        System.out.println("---------------------------------------");
        Vector<Cat> list4 = new Vector();
        ArrayList<Pet> list5 = new ArrayList<>();
        m2(list4);
        m2(list5);
        m1(list1);
        
        ArrayList<Animal> list6 = new ArrayList<>();
        m2(list6);
        
    }
}

相关文章:

  • Java——继承
  • 【OS安装与使用】part5-ubuntu22.04基于conda安装pytorch+tensorflow
  • 深入解析 sudo -l 命令的输出内容
  • pdf预览在vue项目中的使用兼容ie浏览器
  • 面对STM32的庞大体系,如何避免迷失在细节中?
  • [python]windows上安装yolov12环境
  • 选好加密狗,一次说全
  • Deepseek快速做PPT
  • Go Web 项目实战:构建 RESTful API、命令行工具及应用部署
  • 用C++ Qt实现安卓电池充电动效 | 打造工业级电量控件
  • nodejs链接redis
  • webSocket
  • Python装饰器本质250220
  • HTTP与网络安全
  • 华为最新OD机试真题-找单词-Python-OD统一考试(E卷)
  • topN 相似度 torch实现
  • Oracle JDK、Open JDK zulu下载地址
  • Java 与设计模式(17):责任链模式
  • 使用 Docker-compose 部署 MySQL
  • 【蓝桥】二分法
  • 著名哲学家、中山大学哲学系原系主任李锦全逝世
  • 大卫·第艾维瑞谈历史学与社会理论③丨尼古拉斯·卢曼与历史研究
  • 我国翻译从业人员达680.8万人,行业总需求仍在上升
  • “2025未来地球:科学与应用大会”在江西景德镇开幕
  • 上海常务副市长:持续提升跨境投融资便利化水平,稳步扩大金融领域的制度型开放
  • 河南濮阳南乐县官方回应“幼儿园强制订园服”:已责令整改