import java.util.*;
import java.lang.*;
import java.io.*;
class Ideone
{
{
// n人分のデータを作り
int n = 100000;
for (int i = 0; i < n; i++)
customer
[i
][0] = String.
valueOf((char) (rand.
nextInt(26)+'a')) + i
+ "@ab.com"; for (int i = 0; i < n; i++)
customer[i][1] = i + "さん";
// メールアドレスでソートします
Arrays.
sort(customer,
(c1, c2
) -> c1
[0].
compareTo(c2
[0]));
// キーをメールアドレス、値を名前としたハッシュマップも作ります
Map
<String, String
> hashmap
= new HashMap
<>(n
); hashmap.put(c[0], c[1]);
// 同じcustomer(101番目)の名前が取れる
System.
out.
println(customer
[101][0] + "の名前は" + customer
[101][1]); // ハッシュマップからメールアドレスで取ることもできる
System.
out.
println(customer
[101][0] + "の名前は" + hashmap.
get(customer
[101][0]));
// では、m人分のメールアドレスを適当に選んで
int m = 1000;
for (int j = 0; j < m; j++)
keys[j] = customer[rand.nextInt(n)][0];
// 1人ずつ
for (int j = 0; j < m; j++){
// 検索してみましょう
// TODO
if (j % 100 == 0) {
System.
out.
println(key
+ "の名前は" + Objects.
toString(found,
"不明")); }
}
}
}
aW1wb3J0IGphdmEudXRpbC4qOwppbXBvcnQgamF2YS5sYW5nLio7CmltcG9ydCBqYXZhLmlvLio7CgpjbGFzcyBJZGVvbmUKewoJcHVibGljIHN0YXRpYyB2b2lkIG1haW4gKFN0cmluZ1tdIGFyZ3MpIHRocm93cyBqYXZhLmxhbmcuRXhjZXB0aW9uCgl7CgkJLy8gbuS6uuWIhuOBruODh+ODvOOCv+OCkuS9nOOCigoJCWludCBuID0gMTAwMDAwOwoJCVJhbmRvbSByYW5kID0gbmV3IFJhbmRvbSgpOwoJCVN0cmluZ1tdW10gY3VzdG9tZXIgPSBuZXcgU3RyaW5nW25dWzJdOwoJCWZvciAoaW50IGkgPSAwOyBpIDwgbjsgaSsrKQoJCQljdXN0b21lcltpXVswXSA9IFN0cmluZy52YWx1ZU9mKChjaGFyKSAocmFuZC5uZXh0SW50KDI2KSsnYScpKSArIGkgKyAiQGFiLmNvbSI7CgkJZm9yIChpbnQgaSA9IDA7IGkgPCBuOyBpKyspCgkJCWN1c3RvbWVyW2ldWzFdID0gaSArICLjgZXjgpMiOwoJCQoJCS8vIOODoeODvOODq+OCouODieODrOOCueOBp+OCveODvOODiOOBl+OBvuOBmQoJCUFycmF5cy5zb3J0KGN1c3RvbWVyLCAoYzEsIGMyKSAtPiBjMVswXS5jb21wYXJlVG8oYzJbMF0pKTsKCQkKCQkvLyDjgq3jg7zjgpLjg6Hjg7zjg6vjgqLjg4njg6zjgrnjgIHlgKTjgpLlkI3liY3jgajjgZfjgZ/jg4/jg4Pjgrfjg6Xjg57jg4Pjg5fjgoLkvZzjgorjgb7jgZkKCQlNYXA8U3RyaW5nLCBTdHJpbmc+IGhhc2htYXAgPSBuZXcgSGFzaE1hcDw+KG4pOwoJCWZvciAoU3RyaW5nW10gYyA6IGN1c3RvbWVyKQoJCQloYXNobWFwLnB1dChjWzBdLCBjWzFdKTsKCQkKCQkvLyDlkIzjgZhjdXN0b21lcigxMDHnlarnm64p44Gu5ZCN5YmN44GM5Y+W44KM44KLCgkJU3lzdGVtLm91dC5wcmludGxuKGN1c3RvbWVyWzEwMV1bMF0gKyAi44Gu5ZCN5YmN44GvIiArIGN1c3RvbWVyWzEwMV1bMV0pOwoJCS8vIOODj+ODg+OCt+ODpeODnuODg+ODl+OBi+OCieODoeODvOODq+OCouODieODrOOCueOBp+WPluOCi+OBk+OBqOOCguOBp+OBjeOCiwoJCVN5c3RlbS5vdXQucHJpbnRsbihjdXN0b21lclsxMDFdWzBdICsgIuOBruWQjeWJjeOBryIgKyBoYXNobWFwLmdldChjdXN0b21lclsxMDFdWzBdKSk7CgkJU3lzdGVtLm91dC5wcmludGxuKCLnorroqo3ntYLjgo/jgooiKTsKCQkKCQkvLyDjgafjga/jgIFt5Lq65YiG44Gu44Oh44O844Or44Ki44OJ44Os44K544KS6YGp5b2T44Gr6YG444KT44GnCgkJaW50IG0gPSAxMDAwOwoJCVN0cmluZ1tdIGtleXMgPSBuZXcgU3RyaW5nW21dOwoJCWZvciAoaW50IGogPSAwOyBqIDwgbTsgaisrKQoJCQlrZXlzW2pdID0gY3VzdG9tZXJbcmFuZC5uZXh0SW50KG4pXVswXTsKCQkKCQkvLyDvvJHkurrjgZrjgaQKCQlmb3IgKGludCBqID0gMDsgaiA8IG07IGorKyl7CgkJCVN0cmluZyBrZXkgPSBrZXlzW2pdOwoJCQkvLyDmpJzntKLjgZfjgabjgb/jgb7jgZfjgofjgYYKCQkJCgkJCS8vIFRPRE8KCQkJU3RyaW5nIGZvdW5kID0gbnVsbDsKCQkJCgkJCWlmIChqICUgMTAwID09IDApIHsKCQkJCVN5c3RlbS5vdXQucHJpbnRsbihrZXkgKyAi44Gu5ZCN5YmN44GvIiArIE9iamVjdHMudG9TdHJpbmcoZm91bmQsICLkuI3mmI4iKSk7CgkJCX0KCQl9Cgl9Cn0=