Unverified warnings for Arraylist

Why am I getting these 4 warnings from -Xlint and what should I do with them? I am just starting with Java, so most likely something is missing.

import java.util.*;

class CompareGerbils implements Comparator {
    public int compare(Object o1, Object o2) {
       return ((Gerbil)o2).number() - ((Gerbil)o1).number();
    }
}

class Gerbil {
int gerbilNumber;

Gerbil(int gN) {
    gerbilNumber = gN;
    }

int number() {
    return gerbilNumber;
    }
}

public class lt {
    public static void main(String[] args) { 

    // I'd like to be able to add both ints and strings to list
    ArrayList list = new ArrayList();

    //unchecked call warning:
    list.add(1);  

    //unchecked call warning:
    list.add("b");  

    ArrayList<Gerbil> gerbillist = new ArrayList<Gerbil>();

    for(int i = 0; i < 5; i++) {
        gerbillist.add(new Gerbil(i));
    }

    //unchecked conversion warning
    //unchecked method invocation
    Collections.sort(gerbillist, new CompareGerbils());
  }
}

EDIT: The answers so far have responded to an Arraylist expression. What about sorting warnings at the bottom of the code? thank

+5
source share
4 answers

, ArrayList list. , list - ArrayList<Object> list - , ( list.add(1); 1 new Integer(1) - Autoboxing). , , lists, - , , ?

: , (.. ArrayList<Object> list), . , .. List<Object> list.

, ( Comparator<Gerbil>, Collections.sort):

// I'd like to be able to add both ints and strings to list
List<Object> list = new ArrayList<Object>();

list.add(new Integer(1));  

list.add(new String("b"));  

List<Gerbil> gerbillist = new ArrayList<Gerbil>();

for(int i = 0; i < 5; i++) {
    gerbillist.add(new Gerbil(i));
}

Collections.sort(gerbillist, new Comparator<Gerbil>() {
    public int compare(Gerbil o1, Gerbil o2) {
        int diff = o1.getNumber() - o2.getNumber();
        if (diff > 0)
           return 1;
        else if (diff <0)
           return -1;
        else
           return 0;
    }
});

Gerbil, getNumber , number - - (, , setNumber(int value) ):

class Gerbil {
int gerbilNumber;

Gerbil(int gN) {
    gerbilNumber = gN;
    }

int getNumber() {
    return gerbilNumber;
    }
}
+7

, - , . , , .

:

  • .
  • @SuppressWarnings
  • .

EDIT: / .

// I'd like to be able to add both ints and strings to list
List<Object> list = new ArrayList<Object>();

list.add(1);  
list.add("b");  

Seralizable Comparable, , , . , List<Object> , .

Comparator - . - , , . 2000000000 - -2000000000 < 0, 2000000000 - -2000000000 > 0

class CompareGerbils implements Comparator<Gerbil> {
    public int compare(Gerbil a, Gerbil b) {
       return a.number() > b.number() ? +1 
            : a.number() < b.number() ? -1 : 0;
    }
}

, . - shuffle(). , , , .

Collections.shuffle(gerbillis);
+3
public static void main(String[] args) {
    final List<Object> list = new ArrayList<Object>();
    list.add(1);
    list.add("b");

    final List<Gerbil> gerbillist = new ArrayList<Gerbil>();
    for (int i = 0; i < 5; i++) {
        gerbillist.add(new Gerbil(i));
    }

   Collections.sort(gerbillist, new CompareGerbils());
}
+2
List<Object> list = new ArrayList<Object>();

or if you want to allow only strings

 List<String> list = new ArrayList<String>();  
+1
source

All Articles