ARRAYLIST中有 5,8,10,20想找出除8 以外, LIST中最小值.target =8,
List<integer> = 5,8,10,20public int getMin(int target, List<integer>) {}一个FOR循环

解决方案 »

  1.   

    用一个FOR循环, 不能用arrayList.remove(8)
      

  2.   

    这种东西 很多种方式  可以用list 先排序 然后去最边上的一个就对了
      

  3.   

       public int getMin(int target, List<Integer> ill) 
        {
            List<Integer> toll = new ArrayList<Integer>();
            for(int i : ill)
            {
                if(i>target)
                {
                    toll.add(i);
                }
            }
            
            
            return Collections.min(toll);
        }我就这点技术了  想再精我就不会了
      

  4.   


    import java.util.ArrayList;
    import java.util.Collections;
    import java.util.List;
    import java.util.Set;
    public class ListMin {
    public static void main(String[] args){
    int target =8;
    List<Integer> list = new ArrayList<Integer>();
    list.add(5);
    list.add(8);
    list.add(10);
    list.add(20);
    int min = new ListMin().getMin(8, list);
    System.out.println(min);
    } public int getMin(int target, List<Integer> list) {
    list.remove(new Integer(target));
    return Collections.min(list);
    }
    }
      

  5.   


    我和7楼想法一样 不过略加修改下面的方法public static int getMin(int target, List<Integer> list) {
            list.remove(target);
            int min= Collections.min(list);
            list.add(target);
            return min;
        }
    首先加上static方便调用,然后已经是int的参数不用再转Integer,
    最后我觉得返回最小值后的List里面的那个8应该是还在的。
      

  6.   

    wo l ge qu a 
      

  7.   

    楼主是考虑效率呢,还是考虑写法简单而已?
    如果考虑效率,自己写循环,弄一个临时变量,储存最小值。循环中判断是否等于8,等于就continue,再判断是否小于临时变量,小于临时变量就等于当前索引对应的值。
    如果考虑写法简单,一个remove(8),一个min。最保险。如果想不破坏原list的结构,最前面加个copy,后面都对副本超作就行了。
      

  8.   


    public int getMin(int target, List<Integer> list) {
        list.remove(Integer.valueOf(target));
        return Collections.min(list);
    }
      

  9.   


    支持这个  API 中的Collections  里面提供很多方法  什么找重复之类的 里面都有 ,充分利用里面的方法,
      

  10.   


    public int getMin(int target, List<integer>) {
        int temp;
        for(int i = 0; i < list.size(); i ++)
        {
            int x = Integer.parseInt(String.valueOf(m.get(i))); 
            if(x < target) temp = x ;
        }
    }
      

  11.   

    错了 public int getMin(int target, List<Integer> list) 
    {
    int temp = Integer.parseInt(String.valueOf(list.get(0))) ;
    for(int i = 1; i < list.size(); i ++){
    int z = Integer.parseInt(String.valueOf(list.get(i))); 
    if(z < target && z < temp) temp = z;

    }
    return temp ;

    }
      

  12.   


    public static void main(String[] args) {
    int num = getMin(new Integer[]{5,50,11,7,8,10,52,9,20},8);
    System.out.println(num);
    }
    private static int getMin(Integer [] nums , int target) {
    ArrayList<Integer> list = new ArrayList<Integer>(Arrays.asList(nums));
    Collections.sort(list);//排序
    //未检测越界情况
    return list.get(list.lastIndexOf(target)+1);//获得目标数最后出现的位置,那么下一个位置就是比目标数大的所有数中的最小值
    }
      

  13.   


    public class ListMin {
        public static void main(String[] args){
            int target =8;
            List<Integer> list = new ArrayList<Integer>();
    //        list.add(5);
            list.add(8);
            list.add(8);
            list.add(11);
            list.add(10);
            list.add(20);
            int min = new ListMin().getMin(target, list);
            System.out.println(min);
        }    public int getMin(int target, List<Integer> list) {
            list.remove(new Integer(target));
            return Collections.min(list);
        }
    }
    //楼上凡是remove的好像都不行吧
      

  14.   

    这道题调用Collections.min(list);好像不太好用,哥就爱挑战权威
      

  15.   

    sort一下,然后取倒数第二个不就完事了吗?????
      

  16.   

    如果你不知道谁最小呢?
    那么你sort还行么?
      

  17.   


    public static void main(String[] args) throws Exception {
    int[] array = { 8, 10, 20, 11, 12, 4, 5, 8, 7, 3 }; int target = 8;
    int min = array[0]; for (int i = 0; i < array.length; i++) { if (array[i] < min && array[i] != target) {
    min = array[i];
    } if (min == target) {
    min = array[i];
    }
    } System.out.println(min);
    }简单,高效
      

  18.   

    public static void main(String[] args) {
    List listFont = new ArrayList();
    listFont.add(10);
    listFont.add(8);
    listFont.add(5);
    listFont.add(20);
    System.out.println(listFont);
    System.out.println(Collections.min(listFont));
            }
    结果:
    [10, 8, 5, 20]
    5
      

  19.   

    为什么不用迭代器?import java.util.ArrayList;
    import java.util.Iterator;
    import java.util.List;public class Test {
    public static void main(String[] args) {
    int target = 8;
    List<Integer> myList= new ArrayList<Integer>();
    myList.add(4);
    myList.add(17);
    myList.add(8);
    myList.add(9);
    myList.add(3);
    myList.add(6);
    System.out.println(getMin(target,myList));
    }
        
    public static int getMin(int target, List<Integer> list) {
    int min = target;
    List<Integer> arrayList = list;
    Iterator<Integer> iterator = arrayList.iterator();
    while (iterator.hasNext()) {
    Integer integer = (Integer) iterator.next();
    if(integer < min){
    min = integer;
    }
    }
    return (min == target) ? Integer.MIN_VALUE : min;
    }
    }
      

  20.   

    上面写错了 水了 汗import java.util.ArrayList;
    import java.util.Iterator;
    import java.util.List;public class Test {
    public static void main(String[] args) {
    int target = 8;
    List<Integer> myList= new ArrayList<Integer>();
    myList.add(14);
    myList.add(17);
    myList.add(8);
    myList.add(9);
    myList.add(13);
    myList.add(16);
    System.out.println(getMin(target,myList));
    }
        
    public static int getMin(int target, List<Integer> list) {
    int min = Integer.MAX_VALUE;
    List<Integer> arrayList = list;
    Iterator<Integer> iterator = arrayList.iterator();
    while (iterator.hasNext()) {
    Integer integer = (Integer) iterator.next();
    if(integer < min && integer != target){
    min = integer;
    }
    }
    return min;
    }
    }此方法可扩展至范型