我想知道是否有一种简单的方法可以在dart中组合两个列表来创建一个全新的列表对象。我找不到任何类似的东西:
var newList = list1 + list2;
无效。
答案 0 :(得分:52)
您可以使用:
var newList = new List.from(list1)..addAll(list2);
如果您有多个列表,可以使用:
var newList = [list1, list2, list3].expand((x) => x).toList()
从Dart 2.3开始,您可以使用点差运算符:
var newList = [...list1, ...list2, ...list3];
答案 1 :(得分:12)
可能更一致〜
var list = []..addAll(list1)..addAll(list2);
答案 2 :(得分:6)
Alexandres的回答是最好的,但如果你想在你的例子中使用+ like,你可以使用Darts运算符重载:
class MyList<T>{
List<T> _internal = new List<T>();
operator +(other) => new List<T>.from(_internal)..addAll(other);
noSuchMethod(inv){
//pass all calls to _internal
}
}
然后:
var newMyList = myList1 + myList2;
有效:)
答案 3 :(得分:6)
如果要合并两个列表并删除重复项,可以这样做:
var newList = [...list1, ...list2].toSet().toList();
答案 4 :(得分:0)
立即使用<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#D6D5D5"
tools:context=".UpcomingTrips">
<fragment
android:id="@+id/map"
class="com.google.android.gms.maps.SupportMapFragment"
android:layout_width="0dp"
android:layout_height="150dp"
android:layout_marginStart="16dp"
android:layout_marginLeft="16dp"
android:layout_marginTop="8dp"
android:layout_marginEnd="16dp"
android:layout_marginRight="16dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.494"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/notesText" />
</androidx.constraintlayout.widget.ConstraintLayout>
运算符将列表supports串联起来。
示例:
+
答案 5 :(得分:0)
我们可以使用addAll()
方法将其他列表的所有元素添加到现有列表中。
使用addAll()
方法将另一个列表的所有元素添加到现有列表中。并将所有iterable对象附加到此列表的末尾。
通过可迭代的对象数扩展列表的长度。如果此列表是固定长度的,则抛出UnsupportedError
。
创建列表
listone = [1,2,3]
listtwo = [4,5,6]
合并列表
listone.addAll(listtwo);
输出:
[1,2,3,4,5,6]
答案 6 :(得分:0)
我认为无需创建第三个列表...
使用此:
list1 = [1, 2, 3];
list2 = [4, 5, 6];
list1.addAll(list2);
print(list1);
// [1, 2, 3, 4, 5, 6] // is our final result!
答案 7 :(得分:0)
addAll
是合并两个列表的最常用方法。
但是要连接列表列表,您可以使用这三个函数中的任何一个(下面的示例):
void main() {
List<int> a = [1,2,3];
List<int> b = [4,5];
List<int> c = [6];
List<List<int>> abc = [a,b,c]; // list of lists: [ [1,2,3], [4,5], [6] ]
List<int> ints = abc.expand((x) => x).toList();
List<int> ints2 = abc.reduce((list1,list2) => list1 + list2);
List<int> ints3 = abc.fold([], (prev, curr) => prev + curr); // initial value is []
print(ints); // [1,2,3,4,5,6]
print(ints2); // [1,2,3,4,5,6]
print(ints3); // [1,2,3,4,5,6]
}