Решение зависит от версии Django.
from django.db.models import Sum
MyModel.objects.filter(<filters>).aggregate(Sum('field1', field="field1*field2"))
from django.db.models import Sum, F
MyModel.objects.filter(<filters>).aggregate(Sum(F('field1')*F('field2')))
Vector
- это конкретный класс, который реализует интерфейс List
, так что технически это уже List
. Вы можете сделать это:
List list = new Vector();
или:
List<String> list = new Vector<String>();
(при условии Vector
из String
с).
Если, однако, вы хотите преобразовать его в ArrayList
, который является ближайшей реализацией List
к `Vector ~ в Java Collections Framework, то просто сделайте это:
List newList = new ArrayList(vector);
или для общей версии, предполагая Vector
из String
с:
List<String> newList = new ArrayList<String>(vector);
Если вы хотите использовать служебный метод, который преобразует общий тип Vector в соответствующий ArrayList, вы можете использовать следующее:
public static <T> ArrayList<T> toList(Vector<T> source) {
return new ArrayList<T>(source);
}
В своем коде вы будете использовать вспомогательный метод следующим образом:
public void myCode() {
List<String> items = toList(someVector);
System.out.println("items => " + items);
}
Вы также можете использовать встроенный java.util.Collections.list (перечисление) следующим образом:
public void myMethod() {
Vector<String> stringVector = new Vector<String>();
List<String> theList = Collections.list(stringVector.elements());
System.out.println("theList => " + theList);
}
Но, как кто-то упоминал ниже, Vector is-a List! Так зачем вам это делать? Возможно, вы не хотите, чтобы какой-то код, который вы используете, знал, что он работает с вектором - возможно, он неуместно преуменьшает значение, и вы хотите устранить этот запах кода. Затем вы можете использовать
// the method i give my Vector to can't cast it to Vector
methodThatUsesList( Collections.unmodifiableList(theVector) );
, если список должен быть изменен. Изменяемая оболочка без манжеты:
public static <T> List<T> asList(final List<T> vector) {
return new AbstractList<T>() {
public E get(int index) { return vector.get(index); }
public int size() { return vector.size(); }
public E set(int index, E element) { return vector.set(index, element); }
public void add(int index, E element) { vector.add(index, element); }
public E remove(int index) { return vector.remove(index); }
}
}