#java #arraylist #hashmap
#java #arraylist #hashmap
Вопрос:
У меня есть hashmap, который похож на приведенный ниже :
someMap= new HashMap<Integer, String>();
someMap.put(1, "variable1");
someMap.put(2, "variable2");
someMap.put(3, "variable3");
someMap.put(4, "variable4");
someMap.put(5, "variable5");
и у меня есть класс Java, подобный приведенному ниже :
public class SomeVO {
Long someNumber;
String shortDesc;
public Long getSomeNumber() {
return someNumber;
}
public void setSomeNumber(Long someNumber) {
this.someNumber = someNumber;
}
public String getShortDesc() {
return shortDesc;
}
public void setShortDesc(String shortDesc) {
this.shortDesc = shortDesc;
}
}
в базе данных у меня есть такие значения, как
someNumber and short-description
когда я запрашиваю базу данных, я возвращаю список, в котором будет указанная выше информация :
List<SomeVO > existingSomeNumberAndShortDescriptionList
теперь я должен сравнить это List
someMap
с и вернуть две карты, которые будут иметь переменную в качестве ключа и краткое описание для этой переменной.
например, я должен сравнивать с existingSomeNumberAndShortDescriptionList
и мне нужно иметь конечные результаты, такие как
переменная 1, краткое описание (это из базы данных, которая доступна в существующем Som numberandshortdescriptionlist),
и variable1, Y или N, если someNumber доступен в списке it, чем Y
else N
Комментарии:
1. Как использовать ключ «1» в someMap? Это то же самое, что getSomeNumber() в VO?
2. Спасибо, изучающий Java, да
3. Существует ли какое-либо сопоставление между ключом в someMap с someNumber в объекте SomeVO? На каком основании вам нужно сравнивать карту? Сравнение должно быть выполнено с ключом на someMap с someNumber в объекте SomeVO?
4. что вы, наконец, хотите, не очень понятно; можете ли вы перефразировать вопрос, пожалуйста.
5. @Jayaprasad вы правы, и если оба значения верны, то карта будет похожа на someNumber и ShortDescription, а вторая карта будет someNumber и Y 🙂
Ответ №1:
Ваш код будет выглядеть следующим образом :
public class Test {
/**
* @param args
*/
public static void main(String[] args) {
// Loaded Hashmap-------------------------------------------------------------------
HashMap<Long, String> someMap= new HashMap<Long, String>();
someMap.put(1L, "variable1");
someMap.put(2L, "variable2");
someMap.put(3L, "variable3");
someMap.put(4L, "variable4");
someMap.put(5L, "variable5");
// List getting from db-------------------------------------------------------------------
List<SomeVO> existingSomeNumberAndShortDescriptionList = new ArrayList<SomeVO>();
SomeVO someVO1=new SomeVO();
someVO1.setSomeNumber(1L);
someVO1.setShortDesc("Description 1");
SomeVO someVO2=new SomeVO();
someVO2.setSomeNumber(2L);
someVO2.setShortDesc("Description 2");
existingSomeNumberAndShortDescriptionList.add(someVO1);
existingSomeNumberAndShortDescriptionList.add(someVO2);
//--------------------------------------------------------------------------------------------
HashMap<String, String> hashmap1 =new HashMap<String, String>();
HashMap<Long, String> hashmap2 =new HashMap<Long, String>();
//Iterate through list of bean
for (Iterator<SomeVO> iterator = existingSomeNumberAndShortDescriptionList .iterator(); iterator.hasNext();) {
SomeVO someVO = (SomeVO) iterator.next();
// Compare key with main hashmap and Put in hashmap 1
hashmap1.put(someMap.get(someVO.getSomeNumber()),someVO.getShortDesc());
// Compare key with main hashmap and check if number exists and Put in hashmap 2
if(someMap.containsKey(someVO.getSomeNumber()))
hashmap2.put(someVO.getSomeNumber(),"Y");
else
hashmap2.put(someVO.getSomeNumber(),"N");
}
// print hashmaps
System.out.println(hashmap1);
System.out.println(hashmap2);
}
И вывод будет..
{variable1=Description 1, variable2=Description 2}
{1=Y, 2=Y}
Комментарии:
1. Некоторое объяснение было бы неплохо.