powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / HashSet. Интересно получается.
4 сообщений из 4, страница 1 из 1
HashSet. Интересно получается.
    #34191874
bemtaill
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Разбирался с колекциями - в голову пришла интересная мысль. Получается, то если в HaspMap занести объект класса, затем изменить значение одного из его полей (чтобы hashcode изменился) и считай элемент потерян. Выводы сделаны из результатов выполнения кода приведенного ниже и анализа значений в дебагере. Получается что HashSet не отслеживает изменение объекта и не пересчитывает хотя в принципе логично... Поправте если я не прав, плз.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
 package  Pack;

 import  java.util.HashSet;
 import  java.util.Iterator;

 class  Cat{
	 int  x;
	 public  Cat( int  i) {
		x =i;
	}

	@Override
	 public   boolean  equals(Object obj) {
		 if  (obj  instanceof  Cat){
			 if  (((Cat)obj).x ==  this .x)
				  return  true;
		}
		 return  false;
	}

	@Override
	 public   int  hashCode() {
		 return  x* 5 ;
	}
	
}

 public   class  Dog {
	 public   static   void  main(String[] args) {
		HashSet hs =  new  HashSet( 4 );

		hs.add( new  Cat( 1 ));
		hs.add( new  Cat( 2 ));
		hs.add( new  Cat( 3 ));
		Iterator it = hs.iterator();
		Cat hsСat = (Cat) it.next();
		
		hsСat.x= 10 ;
		 if  (hs.contains(hsСat)) {
			System.out.println ("Contains");
		}
	}
}
...
Рейтинг: 0 / 0
HashSet. Интересно получается.
    #34192140
expp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
так точно. только это можно было в книжке прочитать. такая тупая реализация имеет преимущество - эффективность. если вам нужна перетасовка - пишите сами. да и вобще в Java с observable коллекциями напряг (вроде в apache common collections должны были появиться), в отличии от .netа...
...
Рейтинг: 0 / 0
HashSet. Интересно получается.
    #34192404
bemtaill
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
exppтак точно. только это можно было в книжке прочитать. такая тупая реализация имеет преимущество - эффективность. если вам нужна перетасовка - пишите сами. да и вобще в Java с observable коллекциями напряг (вроде в apache common collections должны были появиться), в отличии от .netа...
спасибо.
...
Рейтинг: 0 / 0
HashSet. Интересно получается.
    #34192579
Guest12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В Doc'е написано:

The general contract of hashCode is:

Whenever it is invoked on the same object more than once during an execution of a Java application, the hashCode method must consistently return the same integer, provided no information used in equals comparisons on the object is modified. This integer need not remain consistent from one execution of an application to another execution of the same application.

Т.е. hashCode по идее должна базироваться только на неизменяемых данных объекта
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / HashSet. Интересно получается.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]