Рейтинг темы:
  • 0 Голос(ов) - 0 в среднем
  • 1
  • 2
  • 3
  • 4
  • 5
Вопрос о Class и Map
#1
Появилась необходимость сделать в Map 2 параметра Class.
ZoneAllCoords
ZoneCoords
Код:
private final static Map<ZoneAllCoords, ZoneCoords> Zone_Coords = new ConcurrentHashMap<ZoneAllCoords, ZoneCoords>();


Заполнение идет так:
Код:
Zone_Coords.put(new ZoneAllCoords(1,1), new ZoneCoords(x,y,z));
Zone_Coords.put(new ZoneAllCoords(1,2), new ZoneCoords(x,y,z));
Теперь мне надо через get взять эти параметры x,y,z.
Код:
ZoneCoords zc = Zone_Coords.get(new ZoneAllCoords(1,1));
и соответственно
Код:
System.out.println("##x = "+zc.x+"; y = "+zc.y+"; z = "+zc.z);
Не работает.

Возможно ли как-то достать эти параметры через класс?
Точнее - как достать эти параметры, что нужно передавать в get()?

P.S Подсказали как по другому можно сделать. Но всё равно интересует, возможно ли это сделать.
Ответ
#2
Код

Адресация: ZoneCoords.getX(), ZoneCoords.getY(), ZoneCoords.getZ()
Ответ
#3
Donatte Написал:
Код

С ZoneCoords всё в порядке.
Ответ
#4
Определите в ZoneAllCoords два метода

equals
hashCode

суть в том, для Мапы - ваши обьекты разные

Добавлено через 1 минуту
Вот пример того
http://stackoverflow.com/questions/27581...de-in-java
consulo.io - Consulo - multi-language IDE
Ответ
#5
[SRC="java"]
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;

public class MapZone
{
private final static Map<Zone, ZoneCoords> cord_map = new ConcurrentHashMap<Zone, ZoneCoords>();

public static void main(String[] args)
{
create(new Zone(1, 1), new ZoneCoords(245, 727, 5424));
create(new Zone(1, 2), new ZoneCoords(340, 432, 1234));

Zone zone_1 = getZone(1, 1);
ZoneCoords cord_1 = cord_map.get(zone_1);
System.out.println("##x = " + cord_1.x + "; y = " + cord_1.y + "; z = " + cord_1.z);

Zone zone_2 = getZone(1, 2);
ZoneCoords cord_2 = cord_map.get(zone_2);
System.out.println("##x = " + cord_2.x + "; y = " + cord_2.y + "; z = " + cord_2.z);
}

private static Zone getZone(int id, int number)
{
for(Zone zone : cord_map.keySet())
{
if(zone.zone == id && zone.number == number)
return zone;
}
return null;
}

private static void create(Zone zone, ZoneCoords coords)
{
cord_map.put(zone, coords);
}

static class Zone
{
public int zone;
public int number;

Zone(int zone, int number)
{
this.zone = zone;
this.number = number;
}
}

static class ZoneCoords
{
public int x;
public int y;
public int z;

ZoneCoords(int x, int y, int z)
{
this.x = x;
this.y = y;
this.z = z;
}
}

}
[/SRC]
Можно и так Wink
Ответ
#6
ребята, вы упороты :redlol:
создавать новый класс ради значения в таблице
ладно бы там был ключ нечто вроде String.format("%d-%d", x, y), но такоеее
рекомендую вот это guava's HashBasedTable

зы. Donatte - вам вообще не стоит заниматься помощью
Ответ
#7
KID Написал:ребята, вы упороты :redlol:
создавать новый класс ради значения в таблице
ладно бы там был ключ нечто вроде String.format("%d-%d", x, y), но такоеее
рекомендую вот это guava's HashBasedTable

зы. Donatte - вам вообще не стоит заниматься помощью

А кто сказал, что я помогаю?
Ответ
#8
Donatte Написал:А кто сказал, что я помогаю?
не знаю кто сказал, ваш текст совершенно ниочем - вас бы наказать по правилам форума
Ответ
#9
KID Написал:не знаю кто сказал, ваш текст совершенно ниочем - вас бы наказать по правилам форума

Я не виноват, что человек изобретает семиколёсный велосипед. Придумывать мапы с двумя объектами один из которых как индефикатор, в случаях когда это не требуется, я вас умоляю.

А вы ему ещё, "нака друг подстегни к своему говнокоду гугловскую либу". И потом у анонимусов глаза на лоб лезут от количества подстёгнутых левых библиотек к 2 классам с 10-ю методами.

Оптимальным для него было бы создать класс ZoneCoords с (number, x, y, z) и использовать Map<Integer, List<ZoneCoords>>.

Но как говориться, каждый дрочит как он хочет.

Удачи!
Ответ
#10
Donatte, думаю кид имел в виду то, что Вы отписали совет ввести инкапсуляцию, но суть проблемы была не в этом.
Ответ


Возможно похожие темы ...
Тема Автор Ответы Просмотры Последний пост
  ВЕЧНЫЙ ВОПРОС L2SupORT 3 3,191 08-02-2019, 06:10 PM
Последний пост: L2SupORT
  jad в .class KotBegemot_o 16 4,978 08-14-2013, 03:16 PM
Последний пост: Zubastic
  Jad как преобразовать в class? InRTechnolog 1 1,758 03-10-2013, 06:41 PM
Последний пост: DoGGeD'®
  Java в Class NyaShKa 11 7,486 06-13-2011, 10:56 PM
Последний пост: Ro_0TT
  Вопрос: Компилирования Java проекта без помощи стороннего ПО Ro_0TT 4 3,174 02-06-2011, 02:30 PM
Последний пост: PROGRAMMATOR

Перейти к форуму:


Пользователи, просматривающие эту тему: 1 Гость(ей)