Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
20
Task/Hash-join/Elixir/hash-join.elixir
Normal file
20
Task/Hash-join/Elixir/hash-join.elixir
Normal file
|
|
@ -0,0 +1,20 @@
|
|||
defmodule Hash do
|
||||
def join(table1, index1, table2, index2) do
|
||||
h = Enum.group_by(table1, fn s -> elem(s, index1) end)
|
||||
Enum.flat_map(table2, fn r ->
|
||||
Enum.map(h[elem(r, index2)], fn s -> {s, r} end)
|
||||
end)
|
||||
end
|
||||
end
|
||||
|
||||
table1 = [{27, "Jonah"},
|
||||
{18, "Alan"},
|
||||
{28, "Glory"},
|
||||
{18, "Popeye"},
|
||||
{28, "Alan"}]
|
||||
table2 = [{"Jonah", "Whales"},
|
||||
{"Jonah", "Spiders"},
|
||||
{"Alan", "Ghosts"},
|
||||
{"Alan", "Zombies"},
|
||||
{"Glory", "Buffy"}]
|
||||
Hash.join(table1, 1, table2, 0) |> Enum.each(&IO.inspect &1)
|
||||
Loading…
Add table
Add a link
Reference in a new issue