我想比较arraylist中的两个数字,但我失败了,任何人都可以帮助我,这是我的代码。
MainActivity{
ArrayList<User> users=new ArrayList<User>();
users.clear();
int imgid;
int number=0;
User use1;
List<User> user=DataSupport.findAll(User.class);
for (User use:user){
use1=new User();
use1.setNeednumber(use.getNeednumber());
use1.setMaterialid(use.getMaterialid());
users.add(use1);
}
for(int i=1;i<users.size();i++){
if(users.get(i-1).getMaterialid()==users.get(i).getMaterialid()){
number=number+users.get(i-1).getNeednumber();
Log.d("number",""+number);
}
}
总的来说,就像这样,我使用Litepal创建一个数据库,数据库有一个名为&#34; User&#34;的表,该表有两个第一列是&#34; Materialid& #34;一个是&#34; Neednumber&#34;,我想读取我在此表中存储的数据以及&#34; Materialid&#34;是等于让他们添加。我使用上面的方法,但它没有工作,数字总是零。谁可以帮助我处理这个问题,非常感谢。
答案 0 :(得分:0)
尝试这个逻辑
Integer numberArray[] = { 1, 2, 45, 6, 7, 7, 8, 9, 10, 11, 10, 9, 1 };
Set<Integer> printed = new HashSet<>();
Map<Integer, Integer> map = new HashMap<Integer, Integer>();
for (Integer s : Arrays.asList(numberArray)) {
if (printed.add(s)) // Set.add() also tells if the element was in
// the Set!
System.out
.println("element: " + s + ", count: " + Collections.frequency(Arrays.asList(numberArray), s));
if (Collections.frequency(Arrays.asList(numberArray), s) > 1) {
map.put(s, Collections.frequency(Arrays.asList(numberArray), s));
}
}
Integer sum = 0;
for (Map.Entry m : map.entrySet()) {
System.out.println(m.getKey() + " " + m.getValue());
sum = sum + ((Integer) m.getKey() * (Integer) m.getValue());
}
System.out.println("sum is" + sum);