黑马程序员技术交流社区

标题: 集合问题 [打印本页]

作者: 位俊鹏    时间: 2014-2-28 00:55
标题: 集合问题
定义一个静态方法,该方法可以接收一个List<Integer>,方法内对List进行排序.
//接收Integer类型的,他与int有什么区别吗?
//高手们帮我指点一下吧.

作者: Amorvos    时间: 2014-2-28 08:52
我给你写了一个,写得不简洁,方便你看。Integer是类,是对象,int只是数据类型
PS:你可以自行修改成你想要的类型
  1. import java.util.ArrayList;
  2. import java.util.List;

  3. public class ListSort {

  4.         public static void sort(List<Integer> list) {
  5.                 int size = list.size();
  6.                 int[] store = new int[size];
  7.                 for (int i = 0; i < size; i++) {
  8.                         store[i] = list.get(i);
  9.                 }
  10.                 for (int i = 0; i < size; i++) {
  11.                         for (int j = i; j < size; j++) {
  12.                                 if (store[i] > store[j]) {
  13.                                         int temp = store[j];
  14.                                         store[j] = store[i];
  15.                                         store[i] = temp;
  16.                                 }
  17.                         }
  18.                 }
  19.                 for(int i  = 0 ; i < size ; i++)
  20.                 {
  21.                         list.set(i, store[i]);
  22.                 }
  23.         }

  24.         public static void main(String[] args) {

  25.                 List<Integer> list = new ArrayList<Integer>();
  26.                 for (int i = 9; i > 0; i--) {
  27.                         list.add(i);
  28.                 }
  29.                 System.out.println(list);
  30.                 ListSort.sort(list);
  31.                 System.out.println(list);

  32.         }

  33. }
复制代码

作者: 薛旻    时间: 2014-2-28 09:03
这个代码可以解释一点疑惑
  1. import java.util.*;
  2. class ListSort {
  3.         public static void main(String[] args) {
  4.                 List<Integer> list = new ArrayList<Integer>();
  5.                 list.add(1);
  6.                 list.add(8);
  7.                 list.add(22);
  8.                 list.add(15);
  9.                 list.add(6);

  10.                 mySort(list);

  11.                 for (Integer i : list) {
  12.                         System.out.println(i);
  13.                 }

  14.                 for (int i : list) {
  15.                         System.out.println(i);
  16.                 }
  17.         }

  18.         public static List<Integer> mySort(List<Integer> list) {
  19.                 Collections.sort(list);
  20.                 return list;
  21.         }
  22. }
复制代码

定义的Integer类型集合,但是我存入的是int数据,没有出问题,这是JDK1.5之后的新特性,自动装箱,它会把int自动做new Integer(int) 的动作,也就是把Int基本数据类型包装成它对应的对象
后面输出时,第二种使用了int也没有出错,就是自动拆箱,java根据类型,自动把Integer类型转为int型了

至于list集合,因为它所操作的元素必须是对象,所以定义类型不能使用int这样的基本数据类型

希望对你有帮助




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2