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だった場所
found = hashmap.get(key);
if (j % 100 == 0) {
System.
out.
println(key
+ "の名前は" + Objects.
toString(found,
"不明")); }
}
}
}
aW1wb3J0IGphdmEudXRpbC4qOwppbXBvcnQgamF2YS5sYW5nLio7CmltcG9ydCBqYXZhLmlvLio7CiAKY2xhc3MgSWRlb25lCnsKCXB1YmxpYyBzdGF0aWMgdm9pZCBtYWluIChTdHJpbmdbXSBhcmdzKSB0aHJvd3MgamF2YS5sYW5nLkV4Y2VwdGlvbgoJewoJCS8vIG7kurrliIbjga7jg4fjg7zjgr/jgpLkvZzjgooKCQlpbnQgbiA9IDEwMDAwMDsKCQlSYW5kb20gcmFuZCA9IG5ldyBSYW5kb20oKTsKCQlTdHJpbmdbXVtdIGN1c3RvbWVyID0gbmV3IFN0cmluZ1tuXVsyXTsKCQlmb3IgKGludCBpID0gMDsgaSA8IG47IGkrKykKCQkJY3VzdG9tZXJbaV1bMF0gPSBTdHJpbmcudmFsdWVPZigoY2hhcikgKHJhbmQubmV4dEludCgyNikrJ2EnKSkgKyBpICsgIkBhYi5jb20iOwoJCWZvciAoaW50IGkgPSAwOyBpIDwgbjsgaSsrKQoJCQljdXN0b21lcltpXVsxXSA9IGkgKyAi44GV44KTIjsKIAoJCS8vIOODoeODvOODq+OCouODieODrOOCueOBp+OCveODvOODiOOBl+OBvuOBmQoJCUFycmF5cy5zb3J0KGN1c3RvbWVyLCAoYzEsIGMyKSAtPiBjMVswXS5jb21wYXJlVG8oYzJbMF0pKTsKIAoJCS8vIOOCreODvOOCkuODoeODvOODq+OCouODieODrOOCueOAgeWApOOCkuWQjeWJjeOBqOOBl+OBn+ODj+ODg+OCt+ODpeODnuODg+ODl+OCguS9nOOCiuOBvuOBmQoJCU1hcDxTdHJpbmcsIFN0cmluZz4gaGFzaG1hcCA9IG5ldyBIYXNoTWFwPD4obik7CgkJZm9yIChTdHJpbmdbXSBjIDogY3VzdG9tZXIpCgkJCWhhc2htYXAucHV0KGNbMF0sIGNbMV0pOwogCgkJLy8g5ZCM44GYY3VzdG9tZXIoMTAx55Wq55uuKeOBruWQjeWJjeOBjOWPluOCjOOCiwoJCVN5c3RlbS5vdXQucHJpbnRsbihjdXN0b21lclsxMDFdWzBdICsgIuOBruWQjeWJjeOBryIgKyBjdXN0b21lclsxMDFdWzFdKTsKCQkvLyDjg4/jg4Pjgrfjg6Xjg57jg4Pjg5fjgYvjgonjg6Hjg7zjg6vjgqLjg4njg6zjgrnjgaflj5bjgovjgZPjgajjgoLjgafjgY3jgosKCQlTeXN0ZW0ub3V0LnByaW50bG4oY3VzdG9tZXJbMTAxXVswXSArICLjga7lkI3liY3jga8iICsgaGFzaG1hcC5nZXQoY3VzdG9tZXJbMTAxXVswXSkpOwoJCVN5c3RlbS5vdXQucHJpbnRsbigi56K66KqN57WC44KP44KKIik7CiAKCQkvLyDjgafjga/jgIFt5Lq65YiG44Gu44Oh44O844Or44Ki44OJ44Os44K544KS6YGp5b2T44Gr6YG444KT44GnCgkJaW50IG0gPSAxMDAwOwoJCVN0cmluZ1tdIGtleXMgPSBuZXcgU3RyaW5nW21dOwoJCWZvciAoaW50IGogPSAwOyBqIDwgbTsgaisrKQoJCQlrZXlzW2pdID0gY3VzdG9tZXJbcmFuZC5uZXh0SW50KG4pXVswXTsKIAoJCS8vIO+8keS6uuOBmuOBpAoJCVN0cmluZ1tdIGtleUN1c3RvbWVyID0gbmV3IFN0cmluZ1syXTsKCQlmb3IgKGludCBqID0gMDsgaiA8IG07IGorKyl7CgkJCVN0cmluZyBrZXkgPSBrZXlzW2pdOwoJCQkvLyDmpJzntKLjgZfjgabjgb/jgb7jgZfjgofjgYYKIAoJCQkvLyBUT0RP44Gg44Gj44Gf5aC05omACgkJCVN0cmluZyBmb3VuZCA9IG51bGw7CgkJCWZvdW5kID0gaGFzaG1hcC5nZXQoa2V5KTsKIAoJCQlpZiAoaiAlIDEwMCA9PSAwKSB7CgkJCQlTeXN0ZW0ub3V0LnByaW50bG4oa2V5ICsgIuOBruWQjeWJjeOBryIgKyBPYmplY3RzLnRvU3RyaW5nKGZvdW5kLCAi5LiN5piOIikpOwoJCQl9CgkJfQoJfQp9