在 Java 中,与 C++ 的标准库容器(如 std::vector
、std::list
、std::deque
等)对应的操作通常通过 ArrayList
、LinkedList
、HashSet
、TreeSet
等类和方法来实现。以下是 Java 中常用的容器操作方法及其与 C++ 操作的对应关系:
-
sort()
:- C++:
std::sort()
- Java:
Collections.sort()
或Arrays.sort()
javaCopy Code
import java.util.Arrays; import java.util.Collections; import java.util.List; public class SortExample { public static void main(String[] args) { int[] array = {3, 1, 4, 1, 5, 9}; Arrays.sort(array); // 对数组排序 List<Integer> list = Arrays.asList(3, 1, 4, 1, 5, 9); Collections.sort(list); // 对列表排序 System.out.println(Arrays.toString(array)); System.out.println(list); } }
- C++:
-
insert()
:- C++:
std::vector::insert()
- Java:
List.add(index, element)
javaCopy Code
import java.util.ArrayList; import java.util.List; public class InsertExample { public static void main(String[] args) { List<Integer> list = new ArrayList<>(); list.add(1); list.add(2); list.add(1, 3); // 在索引1处插入元素3 System.out.println(list); } }
- C++:
-
back()
:- C++:
std::vector::back()
- Java:
List.get(list.size() - 1)
javaCopy Code
import java.util.ArrayList; import java.util.List; public class BackExample { public static void main(String[] args) { List<Integer> list = new ArrayList<>(); list.add(1); list.add(2); list.add(3); System.out.println(list.get(list.size() - 1)); // 获取最后一个元素 } }
- C++:
-
end()
:- C++:
std::vector::end()
- Java:
List.iterator()
或List.listIterator()
javaCopy Code
import java.util.ArrayList; import java.util.List; public class EndExample { public static void main(String[] args) { List<Integer> list = new ArrayList<>(); list.add(1); list.add(2); list.add(3); // 获取指向容器末尾的迭代器 var iterator = list.iterator(); while (iterator.hasNext()) { System.out.println(iterator.next()); } } }
- C++:
-
empty()
:- C++:
std::vector::empty()
- Java:
List.isEmpty()
javaCopy Code
import java.util.ArrayList; import java.util.List; public class EmptyExample { public static void main(String[] args) { List<Integer> list = new ArrayList<>(); System.out.println(list.isEmpty()); // 判断容器是否为空 } }
- C++:
-
find(), find_if()
:- C++:
std::find(), std::find_if()
- Java: 使用流(Stream API)的
filter()
和findFirst()
javaCopy Code
import java.util.Arrays; import java.util.List; import java.util.Optional; public class FindExample { public static void main(String[] args) { List<Integer> list = Arrays.asList(1, 2, 3, 4, 5); Optional<Integer> result = list.stream() .filter(x -> x > 3) .findFirst(); result.ifPresent(System.out::println); // 查找第一个大于3的元素 } }
- C++:
-
copy(), copy_if()
:- C++:
std::copy(), std::copy_if()
- Java: 使用流的
collect()
方法或手动循环复制javaCopy Code
import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; public class CopyExample { public static void main(String[] args) { List<Integer> list = Arrays.asList(1, 2, 3, 4, 5); List<Integer> copiedList = list.stream() .filter(x -> x % 2 == 0) .collect(Collectors.toList()); System.out.println(copiedList); // 复制并过滤出偶数 } }
- C++:
-
transform()
:- C++:
std::transform()
- Java: 使用流的
map()
方法javaCopy Code
import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; public class TransformExample { public static void main(String[] args) { List<Integer> list = Arrays.asList(1, 2, 3, 4, 5); List<Integer> transformedList = list.stream() .map(x -> x * 2) .collect(Collectors.toList()); System.out.println(transformedList); // 对元素进行转换(乘以2) } }
- C++:
-
merge()
:- C++:
std::merge()
- Java: 使用
List.addAll()
或流的concat()
javaCopy Code
import java.util.ArrayList; import java.util.Arrays; import java.util.List; public class MergeExample { public static void main(String[] args) { List<Integer> list1 = Arrays.asList(1, 3, 5); List<Integer> list2 = Arrays.asList(2, 4, 6); List<Integer> mergedList = new ArrayList<>(list1); mergedList.addAll(list2); System.out.println(mergedList); // 合并两个列表 } }
- C++:
-
swap(), swap_ranges()
:- C++:
std::swap(), std::swap_ranges()
- Java: 手动实现交换元素
javaCopy Code
import java.util.ArrayList; import java.util.List; public class SwapExample { public static void swap(List<Integer> list, int i, int j) { Integer temp = list.get(i); list.set(i, list.get(j)); list.set(j, temp); } public static void main(String[] args) { List<Integer> list = new ArrayList<>(); list.add(1); list.add(2); list.add(3); System.out.println("Before swap: " + list); swap(list, 0, 2); System.out.println("After swap: " + list); } }
- C++:
-
reverse()
:- C++:
std::reverse()
- Java:
Collections.reverse()
javaCopy Code
import java.util.ArrayList; import java.util.Collections; import java.util.List; public class ReverseExample { public static void main(String[] args) { List<Integer> list = new ArrayList<>(); list.add(1); list.add(2); list.add(3); Collections.reverse(list); System.out.println(list); // 颠倒列表中的元素 } }
- C++:
-
assign()
:- C++:
std::vector::assign()
- Java: 通过重建集合或使用
List.clear()
和List.addAll()
javaCopy Code
import java.util.ArrayList; import java.util.Arrays; import java.util.List; public class AssignExample { public static void main(String[] args) { List<Integer> list = new ArrayList<>(Arrays.asList(1, 2, 3)); System.out.println("Before assign: " + list); list.clear(); list.addAll(Arrays.asList(4, 5, 6)); // 替换内容 System.out.println("After assign: " + list); } }
- C++:
这些 Java 方法和类提供了与 C++ 容器操作相似的功能,尽管语法和具体实现有所不同。