【JAVA】Collections类的其他方法

本文深入探讨Java中Collections类的使用,包括反转、随机打乱、交换、旋转等常用方法,以及如何利用Lambda表达式进行自定义排序。通过实例演示了如何对不同类型的集合进行操作,如字符串和自定义对象的列表。

Collections类还有其他的方法,这里我们值列举几个常用的方法:

//反转
Collections.reverse(s);

//随机打乱
Collections.shuffle(s);
//交换
Collections.swap(s, 2, 5);
//旋转
Collections.rotate(s, 3);
//判断两个集合有没有交集
Collections.disjoint();
package 归并排序;

import edu.xalead.Student;
import org.junit.Test;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

/**
 * 测试Collections
 */
public class CollectionTest {

    @Test
    public void test1() {
List<String> list=new ArrayList<>();

        public final class String
                implements java.io.Serializable, Comparable<java.lang.String>, CharSequence {
            /** The value is used for character storage. */
        这里有一个要求,即要能够是先比较大小的规范。
        而字符串类是final的,所以这里就阻止了继承。
        但是String类里头实现了Comparable接口,
        所以这里我们就不用再去写Comparable接口了。

        可是,如果接口我们自己没有实现的话,
        我们就需要实现Comparator接口。
        而我们可以用Lambda表达式
        List<edu.xalead.Student> list = new ArrayList<>();
        //Lambda表达式
        Collections.sort(list, (o1, o2) -> {
            if (o1 instanceof edu.xalead.Student && o2 instanceof edu.xalead.Student) {
                edu.xalead.Student s1 = (edu.xalead.Student) o1;
                edu.xalead.Student s2 = (Student) o2;
                if (s1.getId() < s2.getId()) {
                    return -1;
                } else if (s1.getId() > s2.getId()) {
                    return 1;
                }
                return 0;
            }
            throw new RuntimeException("类型不匹配");
        });
    }

    @Test
    public void test2() {
        List<Integer> s = new ArrayList<>();
        s.add(20);
        s.add(30);
        s.add(40);
        s.add(21);
        s.add(76);
        s.add(34);
        s.add(56);
        System.out.println("输入:"+s);

        //反转
        Collections.reverse(s);
        System.out.println("反转:"+s);

        //排序
        Collections.sort(s);
        System.out.println("排序:"+s);

        //随机打乱
        Collections.shuffle(s);
        System.out.println("随机打乱:"+s);

        //交换
        Collections.swap(s, 2, 5);
        System.out.println("交换第三个和第六个元素:"+s);

        //旋转
        Collections.rotate(s, 3);
        System.out.println("旋转(从第二个元素往后的元素依次排到第一个元素前面):"+s);

        //Collections还有个Arrays类,
        //它是用来操作数组的。
        //而Collections主要是操作集合的。

        //判断两个集合有没有交集
        //Collections.disjoint();

        //要继承Comparable,因为是二分查找,需要先排序。
        //Collections.binarySearch();
    }
}
//LinkedHasSet,LinkedHasMap
//存的时候用哈希表存,排的时候用链表排。
输入:[20, 30, 40, 21, 76, 34, 56]
反转:[56, 34, 76, 21, 40, 30, 20]
排序:[20, 21, 30, 34, 40, 56, 76]
随机打乱:[21, 76, 56, 30, 20, 40, 34]
交换第三个和第六个元素:[21, 76, 40, 30, 20, 56, 34]
旋转(从第二个元素往后的元素依次排到第一个元素前面):[20, 56, 34, 21, 76, 40, 30]

 

【无人机】基于改进粒子群算法的无人机路径规划研究[和遗传算法、粒子群算法进行比较](Matlab代码实现)内容概要:本文围绕基于改进粒子群算法的无人机路径规划展开研究,重点探讨了在复杂环境中利用改进粒子群算法(PSO)实现无人机三维路径规划的方法,并将其与遗传算法(GA)、标准粒子群算法等传统优化算法进行对比分析。研究内容涵盖路径规划的多目标优化、避障策略、航路点约束以及算法收敛性和寻优能力的评估,所有实验均通过Matlab代码实现,提供了完整的仿真验证流程。文章还提到了多种智能优化算法在无人机路径规划中的应用比较,突出了改进PSO在收敛速度和全局寻优方面的优势。; 适合人群:具备一定Matlab编程基础和优化算法知识的研究生、科研人员及从事无人机路径规划、智能优化算法研究的相关技术人员。; 使用场景及目标:①用于无人机在复杂地形或动态环境下的三维路径规划仿真研究;②比较不同智能优化算法(如PSO、GA、蚁群算法、RRT等)在路径规划中的性能差异;③为多目标优化问题提供算法选型和改进思路。; 阅读建议:建议读者结合文中提供的Matlab代码进行实践操作,重点关注算法的参数设置、适应度函数设计及路径约束处理方式,同时可参考文中提到的多种算法对比思路,拓展到其他智能优化算法的研究与改进中。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

-_星耀_-

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值