2013-05-29 2 views
0

Не могли бы вы объяснить, как работает hashcode? Я новичок в android. Все, что я хочу сделать, это получить hashcode моего edittext , который пользователь ввел.Как использовать hashcode?

Это мой код:

public class MainActivity extends Activity { 
EditText txtCode, txtID; 
Button enter; 

@Override 
     protected void onCreate(Bundle savedInstanceState) 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 


    txtID = (EditText) findViewById(R.id.txtid); 
    txtCode = (EditText) findViewById(R.id.txtcode); 
    enter = (Button) findViewById(R.id.button1); 


     enter.setOnClickListener(new OnClickListener() 
      { 

     @Override 
     public void onClick(View v) 
     { 
      // TODO Auto-generated method stub 

      String a = txtID.getText().toString(); 
      int b = a.hashCode(); 
      txtCode.setText(b); 
     } 
    }); 
} 
+1

'hashCode()' не зависит от Android. – Ahmad

+1

Что не работает с кодом, который у вас есть сейчас? Какую ошибку вы получаете? – Simon

+1

Вы должны увидеть javadoc для 'Object': http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html - контракт .equals() /. HashCode() объясняется полностью. – fge

ответ

6

Ваш код правильный. Так вы получаете хэш-код какого-либо текста, введенного в текстовое поле.

(Или, по крайней мере, если является проблема, не в том аспекте кода.)

Возможно, вы поняли смысл и цель hashcode. Этот метод (который реализуется всеми типами эталонных Java) возвращает int, который представляет собой простой 32-битный хэш для целевого объекта:

  • Это не является криптографической хэш. Крипто хэши генерируются другим способом. Для хэша требуется гораздо больше 32 бит, прежде чем вы можете даже считать его «сильным».
  • Не уникально. Хэши никогда уникальный.
  • Это даже не «возможно, уникальный». Если вы попытаетесь достаточно часто, вы можете столкнуться с хэшами для строк. Действительно, поскольку хеш 32 бита длиной, вы гарантировали, чтобы увидеть хотя бы одно столкновение после попытки 2^32 разных строк. И математика говорит, что вы скорее всего столкнетесь с намного раньше, чем.

Там нет ошибки на самом деле в моем коде, но всегда есть принудительное закрытие на моем эмуляторе, когда я нажимаю войти.

Используйте logcat для поиска того, что вызывает «принудительное закрытие». Вероятно, будет запись с stacktrace для исключения, которое является непосредственной причиной. Если у вас возникли проблемы с выяснением того, что означает функция stacktrace, добавьте его в свой вопрос ...

Смежные вопросы