List proList = new ArrayList<>();
MarketProduct pro1 = new MarketProduct();
pro1.setBrandCode("b1");
pro1.setSeriesCode("s1");
pro1.setModelCode("m1");
pro1.setGrainCode("g1");
pro1.setPrice(45D);
proList.add(pro1);
MarketProduct pro2 = new MarketProduct();
pro2.setBrandCode("b1");
pro2.setSeriesCode("s1");
pro2.setModelCode("m1");
pro2.setGrainCode("g1");
pro2.setPrice(33D);
proList.add(pro2);
怎么判断proList中pro1与pro2的前面四个属性相同?
使用使用集合中的sort()方法 传入自己实现Commparator接口的类的对象,实现自定义排序
使用for循环先得到pro1前面四个属性,再嵌套一个for循环得到pro2前4个属性,做if判断。
List list= new List();
list.Add(new Data{ lat=37,lon = 105,value = 80 });
list.Add(new Data{ lat= 37,lon = 105,value = 90 });
list.Add(new Data{ lat= 38,lon = 107,value = 70 });
list.Add(new Data{ lat= 37,lon = 105,value = 80 });
list.Add(new Data{ lat= 34,lon = 106,value = 85 });
list.Add(new Data{ lat= 34,lon = 106,value = 70 });
list.Add(new Data{ lat= 38,lon = 109,value = 80 });
. . . . . .
如果lat和lon都相同,则取value大的;新的List中,lat、lon相同的只能有一组数
List<MarketProduct> repeatList = new ArrayList<MarketProduct>();//用于存放重复的元素的list
Map<String, Integer> map = new HashMap<>();
for(MarketProduct s : proList){
//map.containsKey() 检测key是否重复
if(map.containsKey(s.getBrandCode())){
repeatList.add(s);//获取重复的值
Integer num = map.get(s.getBrandCode());
map.put(s.getBrandCode(), num+1);
}else{
map.put(s.getBrandCode(), 1);
}
}
for(MarketProduct s : repeatList){
System.out.println("相同的元素:" + s.getBrandCode());
}
for(Map.Entry<String, Integer> entry : map.entrySet()){
System.out.println(entry.getKey() + "出现了:" + entry.getValue() + "次");
}
如果你只是比较前四个属性,那直接for循环取前四个属性,直接使用equals来一一比较是否相等就行了;
如果你是说前四个属性相等,那么这两个对象相等的话,需要重新定义一个比较的方法,然后方法里对这四个属性进行比较,
如果相等,那么就认为这个对象相等,返回true,具体代码自己可以尝试实现以下,不知道是否回答了你的问题
你proList里存储的是 MarketProduct 实例,无非就是想比较两个 MarketProduct 实例的那四个属性是否相同,prolist[i].getfield.equals(prolist[i].getfield)就能对其 MarketProduct 实例的属性进行比较是否相等
一般比较两个对象的某一属性是否相等用equals() ,此时应该重写equals(),