ProgramingTip

배열 목록 스왑 요소

bestdevel 2020. 10. 22. 22:17
반응형

배열 목록 스왑 요소


이 질문에 이미 답변이 있습니다.

의 첫 번째 요소와 마지막 요소를 어떻게 바꾸 ArrayList나요? 배열의 요소를 교체하는 방법을 알고 있습니다. 첫 번째 요소를 저장하기 위해 임시 값을 설정하고 첫 번째 요소를 마지막 요소와 같게 한 다음 마지막 요소를 마지막으로 첫 번째 요소와 같게합니다.

int a = values[0];
int n = values.length;
values[0] = values[n-1];
values[n-1] = a;

그래서 이럴까요 ArrayList<String>?

String a = words.get(0);
int n = words.size();
words.get(0) = words.get(n-1);
words.get(n-1) = a

당신이 사용할 수있는 Collections.swap(List<?> list, int i, int j);


자바에서는 ArrayList를 할당하여 값에을 설정할 수 없으며 set()호출 메서드가 있습니다.

String a = words.get(0);
words.set(0, words.get(words.size() - 1));
words.set(words.size() - 1, a)

이렇게 사용하십시오. 다음은 코드의 온라인 온라인입니다. http://ideone.com/MJJwtc 모습 보기

public static void swap(List list,
                        int i,
                        int j)

지정된 목록의 지정된 위치에있는 요소를 교체합니다. (지정된 위치가 같으면이 메서드를 호출하면 목록이 변경되지 않습니다.)

매개 변수 : 목록-요소를 교체 할 목록입니다. i- 교환 할 한 요소의 색인 j- 교환 할 다른 요소의 색인

공식 컬렉션 문서 읽기

http://docs.oracle.com/javase/7/docs/api/java/util/Collections.html#swap%28java.util.List,%20int,%20int%29

import java.util.*;
import java.lang.*;

class Main {
    public static void main(String[] args) throws java.lang.Exception       
    {    
        //create an ArrayList object
        ArrayList words = new ArrayList();

        //Add elements to Arraylist
        words.add("A");
        words.add("B");
        words.add("C");
        words.add("D");
        words.add("E");

        System.out.println("Before swaping, ArrayList contains : " + words);

        /*
      To swap elements of Java ArrayList use,
      static void swap(List list, int firstElement, int secondElement)
      method of Collections class. Where firstElement is the index of first
      element to be swapped and secondElement is the index of the second element
      to be swapped.

      If the specified positions are equal, list remains unchanged.

      Please note that, this method can throw IndexOutOfBoundsException if
      any of the index values is not in range.        */

        Collections.swap(words, 0, words.size() - 1);

        System.out.println("After swaping, ArrayList contains : " + words);    

    }
}

Oneline 연습 예제 http://ideone.com/MJJwtc


for (int i = 0; i < list.size(); i++) {
        if (i < list.size() - 1) {
            if (list.get(i) > list.get(i + 1)) {
                int j = list.get(i);
                list.remove(i);
                list.add(i, list.get(i));
                list.remove(i + 1);
                list.add(j);
                i = -1;
            }
        }
    }

참고 URL : https://stackoverflow.com/questions/15963549/arraylist-swap-elements

반응형