랜덤리스트 내의 요소 중 하나를 (반 시간 1 개 항목을 삭제하고 반 시간이 2 항목을 제거하는) 삭제

어머니 :

나는 목록을하는 방법이있다. 목록은 모두 "항목 1이"와 "항목 2"가,이 둘 중 하나를 제거해야합니다,하지만 난 그것을 무작위로 할 필요가 (즉, 시간의 절반 제거 "항목 1"반 시간 "항목 2"가 제거)가 포함되어있는 경우. 그렇지 않으면 변경되지 않은 목록을 떠나야한다. 당신이 null을 전달하면, 방법은 아무것도 할 수 없습니다.

나는 방법이있다 :

public static void removeItem(List<String> items) {
    if (items.contains("item1") && 
            items.contains("item2")) 
{

        Random random = new Random();
        int randomIndex =  random.nextInt(items.size());
        items.remove(randomIndex);

    } else if (items.isEmpty()) {

    } else {

    }
}

나는 확실하지가 시간의 절반을 제거하는 방법을 생각합니다. 어떤 도움 appriciated

Prashant Zombade :

목록을 셔플 트릭을 할 수 있습니다. 의 보장이 없지만 half the time절.
당신은 목록에있는 항목의 수에는 제한이 없습니다.

최적의 솔루션되지 않을 수도 있습니다,하지만 난이 제안 할 수있다 :

    public static void main(String[] args) {

            List<String> list = new ArrayList<String>();
            list.add("item2");
            list.add("item3");
            list.add("item1");
            list.add("item4");

            System.out.println("Before : " + list);
            removeItem(list);
            System.out.println("After : " + list);
        }

        public static void removeItem(List<String> items) {

            if (items == null) {

                // Handle the null list
                System.out.println("List is null");
            } else if (items.contains("item1") && items.contains("item2")) {

                //Shuffle the list, randomize the items and then remove `item1` or `item2` which ever appears earliest.
                Collections.shuffle(items);
// Modern approach
items.stream().filter(i->i.equals("item1") || i.equals("item2")).findAny().ifPresent(i->items.remove(i));
/*
                int removeIndex = 0;
                for (int i = 0; i < items.size(); i++) {
                    if (items.get(i).equals("item1") || items.get(i).equals("item2")) {
                        removeIndex = i;
                        break;
                    }
                }

                items.remove(removeIndex);
 */   
            } else if (items.isEmpty()) {

            } else {

            }

추천

출처http://43.154.161.224:23101/article/api/json?id=189832&siteId=1