[java] 자바 하우투 ArrayList 푸시, 팝, 시프트 및 시프트 해제

Java ArrayList.add가 JavaScript와 유사하다는 것을 확인했습니다.Array.push

나는 ArrayList다음과 유사한 기능 을 찾는 데 붙어 있습니다.

  • Array.pop
  • Array.shift
  • Array.unshift 나는쪽으로 기울고있다 ArrayList.remove[At]



답변

ArrayList명명 표준이 독특합니다. 등가는 다음과 같습니다.

Array.push    -> ArrayList.add(Object o); // Append the list
Array.pop     -> ArrayList.remove(int index); // Remove list[index]
Array.shift   -> ArrayList.remove(0); // Remove first element
Array.unshift -> ArrayList.add(int index, Object o); // Prepend the list

참고 unshift하지 않습니다 제거 하는 대신 요소를,하지만 추가 목록에 하나를. 또한 코너 케이스 동작은 각각 고유 한 표준을 가지고 있기 때문에 Java와 JS간에 다를 수 있습니다.


답변

나는 얼마 전에이 문제에 직면했으며 java.util.LinkedList내 경우에 가장 적합 하다는 것을 알았습니다 . 이름이 다른 여러 방법이 있지만 필요한 작업을 수행하고 있습니다.

push()    -> LinkedList.addLast(); // Or just LinkedList.add();
pop()     -> LinkedList.pollLast();
shift()   -> LinkedList.pollFirst();
unshift() -> LinkedList.addFirst();


답변

java.util.Stack클래스 를 듣고 싶을 수도 있습니다 . 푸시, 팝 메소드가 있습니다. 그리고 구현 된 List 인터페이스.

shift / unshift의 경우 @Jon의 답변을 참조 할 수 있습니다.

그러나 ArrayList에 관심을 가질 수 있습니다. arrayList는 동기화 되지 않습니다 . 하지만 스택입니다. (Vector의 하위 클래스). 스레드 안전 요구 사항이있는 경우 Stack이 ArrayList보다 나을 수 있습니다.


답변

Jon의 훌륭한 답변 입니다.

나는 게으르고 타이핑을 싫어하기 때문에 나와 같은 다른 모든 사람들을 위해 간단한 잘라 내기 및 붙여 넣기 예제를 만들었습니다. 즐겨!

import java.util.ArrayList;
import java.util.List;

public class Main {

    public static void main(String[] args) {

        List<String> animals = new ArrayList<>();

        animals.add("Lion");
        animals.add("Tiger");
        animals.add("Cat");
        animals.add("Dog");

        System.out.println(animals); // [Lion, Tiger, Cat, Dog]

        // add() -> push(): Add items to the end of an array
        animals.add("Elephant");
        System.out.println(animals);  // [Lion, Tiger, Cat, Dog, Elephant]

        // remove() -> pop(): Remove an item from the end of an array
        animals.remove(animals.size() - 1);
        System.out.println(animals); // [Lion, Tiger, Cat, Dog]

        // add(0,"xyz") -> unshift(): Add items to the beginning of an array
        animals.add(0, "Penguin");
        System.out.println(animals); // [Penguin, Lion, Tiger, Cat, Dog]

        // remove(0) -> shift(): Remove an item from the beginning of an array
        animals.remove(0);
        System.out.println(animals); // [Lion, Tiger, Cat, Dog]

    }

}


답변

밑줄-자바 라이브러리에는 push (values), pop (), shift () 및 unshift (values) 메소드가 포함되어 있습니다.

코드 예 :

import com.github.underscore.U:

List<String> strings = Arrays.asList("one", "two", " three");
List<String> newStrings = U.push(strings, "four", "five");
// ["one", " two", "three", " four", "five"]
String newPopString = U.pop(strings).fst();
// " three"
String newShiftString = U.shift(strings).fst();
// "one"
List<String> newUnshiftStrings = U.unshift(strings, "four", "five");
// ["four", " five", "one", " two", "three"]


답변