この質問が本当に変な場合は、事前に申し訳ありません。重複データを送信したくないキューにデータを送信しています。プログラムには重複データ項目を防ぐ方法がなく、それらを受け入れるだけですが、キューIDは一意である必要があり、自分で指定できます。そのため、送信するデータに基づいてIDを生成するようにしたいと思います。
2つの文字列があるとします。
hello, SO how are you? //base case
hello, SO how are you? //same
hello, SO how are You? //different, notice the capital Y
What up, SO! //completely different
上記の最初の2つの文字列に一致するが、他の2つを一意にするJavaで何に変換できますか?私はこれまであまり試していませんが(変換するのに最適なものが正確にわからないため)、少し遊んでみましGZIPOutputStream
たが、サイズは似ているようで、それかどうかはわかりませんでした最も効率的でした(つまり、クレイジーな16進文字などの最小サイズ)。
誰かが私が求めていることを理解してくれることを願っていますが、そうでない場合は私に知らせてください。私は明確にするために最善を尽くします。
編集:申し訳ありませんが、文字列用のものが必要なだけでなく、リスト(およびおそらく辞書)も扱っています。ごめんなさい
ありがとう
コード:
public class hashtest {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
convert("hello world"); //same
convert("hello world"); //same
convert("hello world!"); //exclamation mark
convert("hello World"); //capital W
convert_list(new int[] {5, 2, -3}); //same
convert_list(new int[] {5, 2, -3}); //same
convert_list(new int[] {5, 3, -3}); //different
convert_list(new int[] {5, 2, -4}); //different
}
private static void convert_list(int[] is) {
// TODO Auto-generated method stub
System.out.println("word is " + is);
System.out.println("hashcode is " + is.toString());
System.out.println("****");
}
private static void convert(String string) {
// TODO Auto-generated method stub
System.out.println("word is " + string);
System.out.println("hashcode is " + string.hashCode());
System.out.println("****");
}
}