그것은 수동으로만 할 수 있다. 새 멤버를 읽을 때마다 해시가 읽은 멤버를 통과합니다. 값이 같으면 delete 를 사용하여 중복 항목을 삭제하고 새 항목을 작성합니다.
구체적으로 내가 너에게 쓴 간단한 애플릿, 마음대로 쓴 간단한 알고리즘을 보면, 시간 복잡성의 최적화에 관계없이:
#! /usr/bin/perl-W.
경고 사용
내% 해시
For(my $ I = 0;; $ I<6; $i++)
{
$ hash {"C $ I"} = $ I
}
$ hash {"C33"} = 3;;
$ hash {"C55"} = 5;;
$ hash {"C333"} = 3;;
Foreach my $k (키 (%해시))
{printf ("$ k-> $ hash {$ k };; " ); }
Printf ("\ n");
# 동일한 값을 가진 요소 결합
Foreach my $k 1 (키 (%해시))
{
Foreach my $k2 (키 (%해시))
{
If(exists($hash{$k 1}) 및 exists($hash{$k2}) 및 $ hash {$ k/kloc)
{
$hash{"$k 1, $ k2 "} = $ hash {$ k1};
삭제 ($ 해시 {$ k1});
삭제 ($ hash {$ k2});
}
}
}
Foreach my $k (키 (%해시))
{printf ("$ k-> $ hash {$ k };; " ); }
결과는 다음과 같습니다.
C5->; 5; C0->; 0; C33->; 3; C4->; 4; C1->; 1; C3->; 3; C333->; 3; C55->; 5; C2->; 2;
C0->; 0; C4->; 4; C1->; 1; C5, C55 ->5; C333, C33, C3 ->3; C2->; 2;
첫 번째 행은 초기 해시입니다. 두 번 세 번 반복합니다.
두 번째 행이 병합됩니다.