广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Java基础详解之集合框架工具Collections
  • 413
分享到

Java基础详解之集合框架工具Collections

2024-04-02 19:04:59 413人浏览 薄情痞子

Python 官方文档:入门教程 => 点击学习

摘要

目录一、Collections二、Collections中的常见方法三、Aarrays:用于对数组操作的工具类四、二分查找过程中的默认比较器五、集合转化为数组六、增强for循环七、关

一、Collections

说明:Collcetions是集合框架中的工具,特点是方法都是静态的。

二、Collections中的常见方法


1,对list进行二分查找:前提该集合一定要有序。
			int binarySearch(list,key);//要求list集合中的元素都是Comparable的子类。
			int binarySearch(list,key,Comparator);
		2,对list集合进行排序。
			sort(list);
			sort(list,comaprator);
		3,对集合取最大值或者最小值。
			max(Collection)
			max(Collection,comparator)
			min(Collection)
			min(Collection,comparator)
		4,对list集合进行反转。
			reverse(list);
		5,对比较方式进行强行逆转。
			Comparator reverseOrder();
			Comparator reverseOrder(Comparator);
		6,对list集合中的元素进行位置的置换。
			swap(list,x,y);
		7,对list集合进行元素的替换。如果被替换的元素不存在,那么原集合不变。
			replaceAll(list,old,new);

三、Aarrays:用于对数组操作的工具类


1,binarySearch(int[])
		   binarySearch(double[])...
		2,sort(int[])
		   sort(char[])....
		3,toString(int[]).....:将数组变成字符串。
		4,copyOf();复制数组。
		5,copyOfRange():复制部分数组。
		6,equals(int[],int[]);比较两个数组是否相同。
		
		7,List asList(T[]);将数组变成集合。
			这样可以通过集合的操作来操作数组中元素,
			但是不可以使用增删方法,add,remove。因为数组长度是固定的,会出现UnsupportOperationExcetion。
			可以使用的方法:contains,indexOf。。。
			如果数组中存入的基本数据类型,那么asList会将数组实体作为集合中的元素。
			如果数组中的存入的应用数据类型,那么asList会将数组中的元素作为集合中的元素。

		
		如果想要将集合变数组:
		可以使用Collection中的toArray方法。
		传入指定的类型数组即可,该数组的长度最好为集合的size。

四、二分查找过程中的默认比较器


// 在二分查找中设定默认的比较器
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;

public class binarySerach {

    public static void main(String[] args)
    {
        sortDemo();
    }

    public static void sortDemo()
    {
        List<String> list = new ArrayList<String>(); // List集合没有比较方法
        list.add("abcd");
        list.add("aaa");
        list.add("bbb");
        list.add("abcdcdc");
        list.add("z");
        list.add("zz");
        list.add("qq");

        sop("原集合为:"+list);
        int index = Collections.binarySearch(list,"bbb",new StrLenComparator2());
        sop("自定义比较器的index: "+index);
        int index2 = Collections.binarySearch(list,"abcd");
        sop("不传入比较器index:"+index2);

    }
    public static void sop(Object obj)
    {
        System.out.println(obj);
    }
}

class StrLenComparator2 implements Comparator<String>
{
    public int compare(String s1, String s2)
    {
        if(s1.length() > s2.length())
            return 1;
        if (s1.length() < s2.length())
            return -1;
        return s1.compareTo(s2);
    }
}

五、集合转化为数组


// 集合变数组
// 为什么需要这样做?为了对元素进行限定操作,不需要进行增删。
import java.lang.reflect.Array;
import java.util.ArrayList;
import java.util.Arrays;

public class CollectionToArray {
    public static void main(String[] args)
    {
        ArrayList<String> al = new ArrayList<String>();
        al.add("ABC1");
        al.add("ABC2");
        al.add("ABC3");
        al.add("ABC4");
        al.add("ABC5");

        System.out.println(al);

        String[] arr = al.toArray(new String[al.size()]);  // toArray 方法把集合转换为数组
        System.out.println(Arrays.toString(arr));//打印内容
    }
}

六、增强for循环


// 增强for循环的出现是为了解决总是使用迭代器方法进行元素提取

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;

public class ForEachDemo {
    public static void main(String[] args)
    {
        // 例子一:
        ArrayList<String> al = new ArrayList<String>();
        al.add("ABC1");
        al.add("ABC2");
        al.add("ABC3");
        al.add("ABC4");

        for(String s : al)
        {
            System.out.println(s);
        }
        //System.out.println(al);

        // 例子二:HashMap的增强for循环,使用entrySet()
        System.out.println("例子二:HashMap的增强for循环,使用entrySet()");
        HashMap<Integer,String> hm = new HashMap<Integer, String>();
        hm.put(1,"Wzy1");
        hm.put(2,"Wzy2");
        hm.put(3,"Wzy3");
        hm.put(4,"Wzy4");

        for (Map.Entry<Integer,String> it : hm.entrySet())
        {
            System.out.println("Key: "+it.geTKEy()+"--- Value:"+it.getValue());
        }

        // 例子三:HashMap的增强for循环,使用KeySet()
        System.out.println("例子三:HashMap的增强for循环,使用KeySet()");
        Set<Integer> keySet = hm.keySet();
        for(Integer i : keySet)
        {
            System.out.println("Key: "+i+"--- Value:"+hm.get(i));
        }
    }
}

七、关于可变参数的方法

一般的,在java中使用重载的方法应对不同的数据对象,让它们都可以使用方法,但是还有一种写法,可以只写一个方法来接收数据,也不需要建立新的对象。


// 例子一:
public class mutilMethod {
    public static void main(String[] args)
    {
        show(1,2,3,4,5);

    }
    public static void show(int...a) // 可变参数写法,数组的特殊值放在开头
    {
        System.out.println(a.length);
    }
}



//例子二:数组有特殊的
public class mutilMethod {
    public static void main(String[] args)
    {
        show("字符串",2,3,4,5); // 特殊字符String与int发生组合

    }
    public static void show(String c, int...a) // 可变参数写法,数组的特殊值放在开头
    {
        System.out.println(a.length);
    }
}

八、关于reverseOrder函数使用

(1)Collections提供的比较器作为新比较器
(2)强行逆转现有比较器


import java.util.*;

public class reverseOrder {
    public static void main(String[] args)
    {
        sortDemo();
    }

    public static void sortDemo()
    {
        TreeSet<String> ts = new TreeSet<String>(Collections.reverseOrder()); // 传入reverseOrder()将集合倒序排列
        ts.add("aaa");// 或者手写一个自定义比较器,之后使用reverseOrder()函数强行逆转
        ts.add("abc");
        ts.add("a");
        ts.add("aa");
        ts.add("bbb");
        ts.add("cccc");
        ts.add("DDDdd");
        ts.add("eeeeee");

        Iterator it = ts.iterator();
        while (it.hasNext())
        {
            sop(it.next());
        }
    }
    public static void sop(Object obj)
    {
        System.out.println(obj);
    }

九、静态类导入


import java.util.*;
import static java.util.Arrays.*;
import static java.lang.System.*;

public class StaticImport extends Object {

    public static void main(String[] args)
    {
        int[] arr = {3,1,5};
        sort(arr); // 去掉了Arrays.
        int index = binarySearch(arr,1);// 去掉了Arrays.
        System.out.println(Arrays.toString(arr)); // 不能去掉Arrays.
        out.println("index = "+index);// 去掉System.
    }
}

到此这篇关于Java基础详解之集合框架工具Collections的文章就介绍到这了,更多相关java集合框架工具Collections内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: Java基础详解之集合框架工具Collections

本文链接: https://www.lsjlt.com/news/124418.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Java基础详解之集合框架工具Collections
    目录一、Collections二、Collections中的常见方法三、Aarrays:用于对数组操作的工具类四、二分查找过程中的默认比较器五、集合转化为数组六、增强for循环七、关...
    99+
    2022-11-12
  • Java基础之集合框架详解
    目录一、前言二、集合的由来?三、集合和数组的区别?四、Collection集合的功能概述?五、Collection集合存储字符串并遍历?(迭代器)六、...
    99+
    2022-11-12
  • Java基础之集合Set详解
    目录一、概述二、Set的常用方法三、Set的遍历3.1增强for循环3.2 迭代器遍历一、概述 Set是Java中的集合类,提供了一种无顺序,不重复的集合。常用的子类包括HashSe...
    99+
    2022-11-12
  • Java集合框架之Map详解
    目录1、Map的实现2、HashMap 和 Hashtable 的区别3、介绍下对象的 hashCode()和equals(),使用场景4、HashMap和TreeMap应该怎么选择...
    99+
    2022-11-13
  • java 集合工具类Collections及Comparable和Comparator排序详解
    目录一、常用功能二、Comparator比较器三、Comparable和Comparator两个接口的区别四、练习五、扩展一、常用功能 java.utils.Collections是...
    99+
    2022-11-13
  • Java基础类之ArrayUtils工具类详解
    目录1、引入pom依赖2、ArrayUtils中的方法:3、举例总结1、引入pom依赖 <!-- https://mvnrepository.com/artifact/o...
    99+
    2022-11-12
  • 集合框架(Collections Framework)详解及代码示例
    简介集合和数组的区别:数组存储基础数据类型,且每一个数组都只能存储一种数据类型的数据,空间不可变。集合存储对象,一个集合中可以存储多种类型的对象。空间可变。严格地说,集合是存储对象的引用,每个对象都称为集合的元素。根据存储时数据结构的不同,...
    99+
    2023-05-30
    java 集合框架 fram
  • Java集合框架之Set和Map详解
    目录Set接口HashSetTreeSetMap接口HashMapTreeMapSet接口 set接口等同于Collection接口,不过其方法的行为有更严谨的定义。set的add...
    99+
    2022-11-12
  • python基础之set集合详解
    一、set 集合 集合(set)是一个无序的不重复元素序列。 可以使用大括号 {} 或者 set() 函数创建集合,注意:创建一个空集合必须用 set() 而不是 { },因为 { ...
    99+
    2022-11-12
  • python3基础之集合set详解
    目录集合set1.集合定义2.集合基础操作固定集合1.定义2.作用基础操作集合set 1.集合定义 1.由一系列不可重复的不可变类型变量组成的可变映射容器 2.相当于只有键没有值的字...
    99+
    2022-11-12
  • Java中关于Collections集合工具类的详细介绍
    Collections 是一个操作 Set、List 和 Map 等集合的工具类。 Collections 中提供了一系列静态的方法对集合元素进行排序、查询和修改等操作,还提供了对集...
    99+
    2022-11-12
  • Java 基础--Arrays工具类详解
    目录1、数组转换成字符串2、数组转换成集合(1)asList(2)stream 流操作(3)Collections.addAll()3、对数组进行升序排列4、判断数组是否相等5、所有...
    99+
    2022-11-12
  • Java集合框架之Stack Queue Deque使用详解刨析
    目录1. Stack1.1 介绍1.2 常见方法2. Queue2.1 介绍2.2 常见方法3. Deque3.1 介绍3.2 常见方法1. Stack 1.1 介绍 Stack 栈...
    99+
    2022-11-12
  • Java集合框架之List ArrayList LinkedList使用详解刨析
    目录1. List1.1 List 的常见方法1.2 代码示例2. ArrayList2.1 介绍2.2 ArrayList 的构造方法2.3 ArrayList 底层数组的大小3....
    99+
    2022-11-12
  • Spring框架AOP基础之代理模式详解
    目录一、模拟场景二、代理模式静态代理动态代理一、模拟场景 创建接口 public interface Calculator { int add(int i, int j); ...
    99+
    2022-11-13
    Spring代理模式 Spring AOP代理模式
  • Java集合框架LinkedList详解及实例
    Java集合框架LinkedList详解LinkedList定义package java.util;public class LinkedList<E> extends AbstractSequentialList<E&g...
    99+
    2023-05-31
    java linkedlist ava
  • Java基础之颜色工具类(超详细注释)
    颜色工具类(超详细注释) 设置属性值自动格式化rgb值和十六进制颜色值。 import java.util.HashMap; import java.util.Map; pub...
    99+
    2022-11-12
  • Java 基础详解(泛型、集合、IO、反射)
    计划把 Java 基础的有些部分再次看一遍,巩固一下,下面以及以后就会分享自己再次学习的一点笔记!不是有关标题的所有知识点,只是自己觉得模糊的一些知识点。1.对于泛型类而言,你若没有指明其类型,默认为Object;2.在继承泛型类以及接口的...
    99+
    2023-05-30
    java 泛型 集合
  • Java数据结构之集合框架与常用算法详解
    目录1 集合框架1.1 集合框架概念1.2 容器涉及的数据结构2 算法2.1 算法概念2.2 算法效率3 时间复杂度3.1 时间复杂度概念3.2 大O的渐进表示法3.3 推导大O阶方...
    99+
    2023-05-18
    Java集合框架 Java算法
  • java框架基础之SPI机制实现及源码解析
    目录1 定义2 案例实现标准接口厂商的具体接口实现3 SPI机制源码分析3.1 load加载过程3.2 实例化过程1 定义 SPI 的全名为 Service Pr...
    99+
    2022-11-13
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作