java Collections类操作集合查找、替换操作详解

KLQ 2020-08-26 10:24:44 java常见问答 4223

下面的文章要给大家介绍的内容就是和java Collections类操作集合查找、替换操作相关的知识,这些方面你都了解吗?不懂的小伙伴可以通过下面的文章来学习一下呢。

Collections提供了下面比较常用的用于查找、替换集合元素的方法:

int binarySearch(List list, Object key):使用二分搜索法搜索指定的List集合,以获得指定对象在List集合中的索引;假如,要使这个方法可以正常工作,那么就必须保证List中的元素已经处于有序状态;

Object max(Collection coll):根据元素的自然顺序,返回给定集合中的最大元素;

Object max(Collection coll, Comparator comp):根据Comparator指定的顺序,返回给定集合中的最大元素;

Object min(Collection coll):根据元素的自然顺序,返回给定集合中的最小元素;

Object min(Collection coll, Comparator comp):根据Comparator指定的顺序,返回给定集合中的最小元素;

void fill(List list, Object obj):使用指定元素obj替换指定List集合中的所有元素;

int frequency(Collection c, Object o):返回指定集合中指定元素的出现次数;

int indexOfSubList(List source, List target):返回子List对象在父List对象中第一次出现的位置索引;假如父List中没有出现这样的子List,那么返回-1;

int lastIndexOfSubList(List source, List target):返回子List对象在父List对象中最后一次出现的位置索引;假如,父List中没有岀现这样的子List,那么返回 -1;

boolean replaceAll(List list, Object oldVal, Object newVal):使用一个新值newVal替换List对象的所有旧值oldVal;

下面的程序就对Collections工具类的用法做了一个简单的示范。

示例:

编写一个程序,要求用户输入3个商品名称,之后,使用Collections类当中的fill()方法对商品信息进行重置操作,即将所有名称都更改成“未填写”。

首先循环录入3个商品名称,并且把这些商品信息存储到List集合中,之后,调用Collections类中的fill()方法将这个集合当中的所有元素值替换成“未填写”。

最后使用for循环将替换后的集合元素输出。

代码实现:

public class Test3
{
    public static void main(String[] args)
    {
        Scanner input = new Scanner(System.in);
        List products = new ArrayList();
        System.out.println("******** 商品信息 ********");
        for (int i = 0; i < 3; i++)
        {
            System.out.println("请输入第 " + (i + 1) + " 个商品的名称:");
            String name = input.next();
            products.add(name); // 将用户录入的商品名称保存到List集合中
        }
        System.out.println("重置商品信息,将所有名称都更改为'未填写'");
        Collections.fill(products, "未填写");
        System.out.println("重置后的商品信息为:");
        for (int i = 0; i < products.size(); i++)
        {
            System.out.print(products.get(i) + "\t");
        }
    }
}

结果:

******** 商品信息 ********
请输入第 1 个商品的名称:
苏打水
请输入第 2 个商品的名称:
矿泉水
请输入第 3 个商品的名称:
冰红茶
重置商品信息,将所有名称都更改为'未填写'
重置后的商品信息为:
未填写    未填写    未填写

示例:

在一个集合当中保存4个数据,分别输出最大最小元素和指定数据在集合中出现的次数。

向List集合中添加4个数据,之后调用Collections类中的max()和min()方法输出集合中的最大最小元素,replaceAll()替换元素,frequency()判断指定数据在List集合中出现的次数,最后用 binarySearch()进行二分法查询。

代码实现:

public class Test4
{
    public static void main(String[] args)
    {
        ArrayList nums = new ArrayList();
        nums.add(2);
        nums.add(-5);
        nums.add(3);
        nums.add(0);
        System.out.println(nums); // 输出:[2, -5, 3, 0]
        System.out.println(Collections.max(nums)); // 输出最大元素,将输出 3
        System.out.println(Collections.min(nums)); // 输出最小元素,将输出-5
        Collections.replaceAll(nums, 0, 1); // 将 nums中的 0 使用 1 来代替
        System.out.println(nums); // 输出:[2, -5, 3, 1]
        // 判断-5在List集合中出现的次数,返回1
        System.out.println(Collections.frequency(nums, -5));
        Collections.sort(nums); // 对 nums集合排序
        System.out.println(nums); // 输出:[-5, 1, 2, 3]
        // 只有排序后的List集合才可用二分法查询,输出3
        System.out.println(Collections.binarySearch(nums, 3));
    }
}

结果:

[2, -5, 3, 0]
3
-5
[2, -5, 3, 1]
1
[-5, 1, 2, 3]
3

关于查找、替换操作你都清楚了吗?请继续关注奇Q工具网吧,更多的java基础知识,以及java编程常见问题可以为你分享解答哦。

推荐阅读:

java Collections类操作集合排序详解

java Collection接口详细介绍