과일이 들어있는 벡터가 있습니다. 나는 드로잉 캔버스에 여러 종류의 과일을 넣을 수있다. 두 개의 겹치는 과일이있는 경우 과일을 선택하면 과일을 키울 수 있기를 원합니다. 마치 다른 과일 위에있는 것처럼 보입니다.벡터에서 요소의 순서를 변경하는 방법은 무엇입니까?
기본 아이디어는 jbutton을 누른 후 호출되는 raiseFruit()을 사용하는 것입니다. 선택된 과일과 동일한 임시 변수 세트를 만든 다음 과일을 (a + 1)과 동일하게 설정하려고합니다. 그래서 벡터의 다음 위치에 놓습니다. 그리고 나서이 변수를 임시 변수로 설정합니다. 나는 이것이 올바른 생각이라고 생각하니?
public void raiseFruit() { //raisefruit button
if (_fruitIsSelected==true) {
for (int i=0; i<_storedFruit.size() - 1; i++) {
FunFruit a = _storedFruit.get(i);
FunFruit b = _storedFruit.get(i + 1);
if (_storedFruit.get(i+1)!=null) {
FunFruit temp = a;
_storedFruit.get(i) = _storedFruit.get(i+1);
a=b;
b = temp;
//_storedShapes.setElementAt(_storedShapes.get(i+1), i);
//_storedShapes.setElementAt(_currentShape, i+1);
repaint();
}
}
}
}
내가했던 setElementAt를 사용하여 시도하고 그것이 작동하지만, 그때 누르면 "raisefruit"다시 그냥 완전히 사라 그것의 앞에 요소를 만들 것입니다. 방금 앞에서 요소를 계속 만드는 부분에 주석을 달아서 사라지는 코드를 게시했습니다. "a = b"대신 변수 b의 벡터에서 whats와 동일한 변수 a에 벡터의 내용을 설정하려고합니다. "왼손잡이는 변수 여야합니다."라는 오류가 계속 발생합니다. 왜냐하면 나는 단지 =를 설정하는 것이 포인터를 변경한다는 것을 알고 있기 때문입니다. 나는 과일 요소를 앞에 놓지 않고 벡터 내부에서 그것을 실제로 어떻게 바꾸는 지 알지 못한다.
그냥 궁금해서 온도,에 할당하는 대신 목록에서 요소를 설정하는
를 사용 '벡터'를 사용합니까? 지나치게 오래된 자바 서적/자습서를 읽고 있지 않습니까? '벡터'는 10 년 이래로 레거시/구식 클래스로 간주됩니다. – BalusC
벡터가 쓸모없는 클래스로 간주되는 이유는 무엇입니까? 나는 AP 컴퓨터 과학 수업에서 고등학교 때 그들을 사용하는 방법을 배웠습니다. – Susie
벡터는 확실히 쓸모가 없습니다. 그것들의 유용성은 ArrayList 나 Collections 클래스에서 얻은 객체만큼 뛰어나지 만 여전히 다른 유사한 클래스에서는 사용할 수없는 기능을 가지고 있습니다. – Crollster