2017-10-06 2 views
-2

Je veux comparer deux nombres dans arraylist, mais j'ai échoué, n'importe qui peut m'aider, voici mon code.Comment comparer deux nombres dans 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); 
       } 
      } 

Dans l'ensemble, il est comme ça, j'utilise Litepal pour créer une base de données, la base de données ont une table appelée « utilisateur », la table ont deux colonnes est « MaterialID » on est « Neednumber », je voulez lire les données ce que je stocke dans ce tableau et si le "Materialid" est égal laissez-les ajouter.J'utilise la méthode ci-dessus mais cela n'a pas fonctionné, le nombre toujours zéro.qui peut m'aider à faire face à ce problème, merci très beaucoup.

+5

[Pourquoi « Quelqu'un peut-il me aider? » Pas une question réelle?] (Https://meta.stackoverflow.com/q/284236/5221149) – Andreas

+2

* "mais J'ai échoué "* et *" ça n'a pas marché "* ne sont pas des descriptions utiles. En outre, avez-vous essayé de déboguer pour voir quelles valeurs vous obtenez réellement pour 'materialid'? [Qu'est-ce qu'un débogueur et comment peut-il m'aider à diagnostiquer des problèmes?] (Https://stackoverflow.com/q/25385173/5221149) --- Même s'il y a plusieurs utilisateurs avec le même id de matériel, vous ne faites que comparer les utilisateurs qui se produisent l'un à côté de l'autre dans la liste. Est-ce vraiment ce que vous vouliez? – Andreas

+0

se référer https://stackoverflow.com/questions/19155283/simple-way-to-compare-2-arraylists – sasikumar

Répondre

0

essayer cette logique

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);