第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

排序數(shù)組對象的列表使用來自另一個數(shù)組的順序列表

排序數(shù)組對象的列表使用來自另一個數(shù)組的順序列表

拉丁的傳說 2022-08-03 10:36:15
我有一個特殊順序的“成員”數(shù)組:ArrayList<Member> sortedMembers我有另一個“成員”數(shù)組,可能包含也可能不包含第一個列表中的所有成員。ArrayList<Member> unsortedMembers為了判斷第一個列表中的成員是否等于第二個列表中的成員,該類具有一個名為 的屬性。MemberIntegermemberId那么,我該如何以最有效的方法訂購第二個列表呢?我真的希望盡最大努力,例如,如果第一個列表中不包含a,只需在第二個列表末尾附加成員即可。Member
查看完整描述

1 回答

?
嚕嚕噠

TA貢獻1784條經(jīng)驗 獲得超7個贊

您需要在排序順序列表中查找項目,然后,如果存在,則獲取它們的索引并使用這些索引進行排序。


排序列表.java

import java.util.*;


public class SortList {

    public static void main(String[] args) {

        List<Member> list = Arrays.asList(

            new Member( 1, "A"),

            new Member( 3, "C"),

            new Member(26, "Z"),

            new Member( 4, "D")

        );


        List<Member> order = Arrays.asList(

            new Member(4, "D"),

            new Member(3, "C"),

            new Member(2, "B"),

            new Member(1, "A")

        );


        sortBasedOn(list, order);


        list.stream().forEach(System.out::println);

    }


    public static <E> void sortBasedOn(List<E> toSort, List<E> ref, Comparator<E> comparator) {

        Collections.sort(toSort, comparator);

    }


    public static void sortBasedOn(List<Member> toSort, List<Member> ref) {

        sortBasedOn(toSort, ref, (left, right) -> {

            Optional<Member> foundLeft = ref.stream().filter(x -> x.getMemberId() == left.getMemberId()).findFirst();

            Optional<Member> foundRight = ref.stream().filter(x -> x.getMemberId() == right.getMemberId()).findFirst();

            if (!foundLeft.isPresent()) return 1;

            if (!foundRight.isPresent()) return -1;

            return Integer.compare(ref.indexOf(foundLeft.get()), ref.indexOf(foundRight.get()));

        });

    }

}

會員.java

public static class Member {

    private int memberId;

    private String name;


    public Member(int memberId, String name) {

        this.memberId = memberId;

        this.name = name;

    }


    public int getMemberId() {

        return memberId;

    }


    public String getName() {

        return name;

    }


    @Override

    public String toString() {

        return String.format("Member [memberId=%s, name=%s]", memberId, name);

    }

}


查看完整回答
反對 回復 2022-08-03
  • 1 回答
  • 0 關(guān)注
  • 87 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號