如何在 java 中连接两个列表?
How to concat two list in java?
我想将列表 1 中的空值替换为列表 2 中同一列中的空值,结果将存储在列表 3 中。
List<Date> list1 = Arrays.asList(opDate1, null, opDate2, null, opDate3);
List<Date> list2 = Arrays.asList(date1, date2, date3, date4, date5);
结果:
List<Date> list3 = Arrays.asList(opDate1, date2, opDate2, date4, opDate3);
我应该如何进行?
更新
我的代码:
public List<Date> concatList(List<Date> list1, List<Date> list2) {
List<Date> list3 = new ArrayList<Date>();
for(int i=0; i<list1.size();i++){
for(int j=0; i<list2.size();j++){
if(list1.get(i) == null)
list3.add(list2.get(j));
else
list3.add(list1.get(i));
}
}
return list3;
}
使用for循环。在循环中,使用 if 语句。
如果特定点的值为null,则将其替换为另一个List
中的相同位置值
试试这个
List<String> list3 = new ArrayList<>(list1.size());
for (int i=0;i<list1.size();i++) {
if (list1.get(i) == null) {
list3.add(i,list2.get(i));
} else {
list3.add(i,list1.get(i));
}
}
List<String> list3 = new ArrayList<>();
ListIterator<String> iter1 = list1.listIterator();
ListIterator<String> iter2 = list2.listIterator();
while(iter1.hasNext()) {
String a = iter1.next();
String b = iter2.next();
if(a!=null) {
list3.add(a);
}
else{
list3.add(b);
}
}
因为您需要访问每个元素,所以不要对每个 i 使用 list.get(i),因为这会给出 O(n^2) 的复杂度,而不是 O(n)
试试这个
List<String> list3 = new ArrayList<>();
for (int i = 0;i <list1.size();i++) {
list3.add(list1.get(i) != null ? list1.get(i) : list2.get(i));
}
我认为它有效
public List<Date> concatList(List<Date> list1, List<Date> list2) {
List<Date> list3 = new ArrayList<Date>();
/* here you will remove all null in your list*/
list1.removeIf(Objects::isNull);
list2.removeIf(Objects::isNull);
/* here you will add both list inside list3*/
list3.addAll(list1);
list3.addAll(list2);
}
我想将列表 1 中的空值替换为列表 2 中同一列中的空值,结果将存储在列表 3 中。
List<Date> list1 = Arrays.asList(opDate1, null, opDate2, null, opDate3);
List<Date> list2 = Arrays.asList(date1, date2, date3, date4, date5);
结果:
List<Date> list3 = Arrays.asList(opDate1, date2, opDate2, date4, opDate3);
我应该如何进行?
更新
我的代码:
public List<Date> concatList(List<Date> list1, List<Date> list2) {
List<Date> list3 = new ArrayList<Date>();
for(int i=0; i<list1.size();i++){
for(int j=0; i<list2.size();j++){
if(list1.get(i) == null)
list3.add(list2.get(j));
else
list3.add(list1.get(i));
}
}
return list3;
}
使用for循环。在循环中,使用 if 语句。 如果特定点的值为null,则将其替换为另一个List
中的相同位置值试试这个
List<String> list3 = new ArrayList<>(list1.size());
for (int i=0;i<list1.size();i++) {
if (list1.get(i) == null) {
list3.add(i,list2.get(i));
} else {
list3.add(i,list1.get(i));
}
}
List<String> list3 = new ArrayList<>();
ListIterator<String> iter1 = list1.listIterator();
ListIterator<String> iter2 = list2.listIterator();
while(iter1.hasNext()) {
String a = iter1.next();
String b = iter2.next();
if(a!=null) {
list3.add(a);
}
else{
list3.add(b);
}
}
因为您需要访问每个元素,所以不要对每个 i 使用 list.get(i),因为这会给出 O(n^2) 的复杂度,而不是 O(n)
试试这个
List<String> list3 = new ArrayList<>();
for (int i = 0;i <list1.size();i++) {
list3.add(list1.get(i) != null ? list1.get(i) : list2.get(i));
}
我认为它有效
public List<Date> concatList(List<Date> list1, List<Date> list2) {
List<Date> list3 = new ArrayList<Date>();
/* here you will remove all null in your list*/
list1.removeIf(Objects::isNull);
list2.removeIf(Objects::isNull);
/* here you will add both list inside list3*/
list3.addAll(list1);
list3.addAll(list2);
}