Sobes.tech
Senior

/* Таңдау сол.K, сол.V1, оң.V2 Солдан қосу оңға ON сол.K = оң.К; */ public <K extends Comparable<K>, V1, V2> List<Triple<K, V1, V2>> join(List<Pair<K, V1>> сол, List<Pair<K, V2>> оң) { return null; } private static class Pair<A, B> { private A биринчи; private B экинчи; Pair(A биринчи, B экинчи) { this.биринчи = биринчи; this.экинчи = экинчи; } } private static class Triple<A, B, C> { private A биринчи; private B экинчи; private C үчүнчү; Triple(A биринчи, B экинчи, C үчүнчү) { this.биринчи = биринчи; this.экинчи = экинчи; this.үчүнчү = үчүнчү; } }

sobes.tech AI

Ҷавоб аз AI

Дарҷ аст татбиқи функсияи join, ки пайвасти дохилӣ (inner join) байни ду рӯйхати ҷуфтҳоро дар асоси калиди K иҷро мекунад. Барои самаранокӣ, Map истифода мешавад, то ки ба зудӣ унсурҳои мувофиқ аз рӯйхати дуввумро ҷустуҷӯ кунад.

public <K extends Comparable<K>, V1, V2> List<Triple<K, V1, V2>> join(List<Pair<K, V1>> left, List<Pair<K, V2>> right) {
    Map<K, V2> rightMap = new HashMap<>();
    for (Pair<K, V2> pair : right) {
        rightMap.put(pair.first, pair.second);
    }

    List<Triple<K, V1, V2>> result = new ArrayList<>();
    for (Pair<K, V1> pairLeft : left) {
        V2 v2 = rightMap.get(pairLeft.first);
        if (v2 != null) {
            result.add(new Triple<>(pairLeft.first, pairLeft.second, v2));
        }
    }
    return result;
}

Ин ҷо:

  • Луғат аз рӯйхати рост барои ҷустуҷӯи зудтар дар асоси калид сохта мешавад.
  • Рӯйхати чап гузаронида мешавад, барои ҳар калид арзиши мувофиқ дар луғат ҷустуҷӯ мешавад.
  • Агар пайдо шавад, Triple сохта мешавад ва ба натиҷа илова карда мешавад.

Ин ба суоли SQL бо пайвастшавӣ (JOIN) дар асоси калид K мувофиқат мекунад.