Java中的ArrayList 重要方法补充

Java 中的 ArrayList 重要方法补充

Java 中的 ArrayList retainAll()方法

数组列表 的**retainall()**方法用于移除指定集合中未包含的所有数组列表元素,或者保留当前数组列表实例中所有匹配元素,这些元素匹配作为参数传递给该方法的集合列表中的所有元素。 语法:

public boolean retainAll(Collection C)

**参数:**C是包含要保留在列表中的元素的集合。 **返回值:**如果调用 else 导致列表发生变化,则该方法返回布尔值 true,否则返回 false。 例外:

  1. ClassCastException:如果此数组列表元素的类与传递的集合不兼容。这是可选的。
  2. NullPointerException:如果列表包含空元素,并且传递的集合不允许空元素,或者如果指定的集合为空。这也是可选的。
public static void testRetainAll() {
		ArrayList<String> list1 = new ArrayList<String>();
		list1.add("pen");
		list1.add("pencil");
		list1.add("paper");
		ArrayList<String> list2 = new ArrayList<String>();
		list2.add("pen");
		list2.add("paper");
		list2.add("books");
		list2.add("rubber");
		System.out.println("list1 Contains :" + list1);
		System.out.println("list2 Contains :" + list2);

		list2.retainAll(list1);
		System.out.println("\nAfter Applying list2.retainAll(list1) \n");

		System.out.println("list1 Contains :" + list1);
		System.out.println("list2 Contains :" + list2);
	}

Output

list1 Contains :[pen, pencil, paper]
list2 Contains :[pen, paper, books, rubber]

After Applying list2.retainAll(list1) 

list1 Contains :[pen, pencil, paper]
list2 Contains :[pen, paper]

Java 中的 ArrayList forEach()方法

数组列表forEach() 方法用于对数组列表中的每个元素执行一定的操作。此方法遍历数组列表的 Iterable 的每个元素,直到该方法处理完所有元素或引发异常。如果方法指定了迭代顺序,则按照迭代顺序执行操作。操作引发的异常被传递给调用方。

语法

public void forEach(Consumer<? super E> action)

**参数:**该方法取一个参数动作,代表每个元素要执行的动作。

**返回:**这个方法不返回任何东西。

**异常:**如果指定的操作为空,此方法将引发 NullPointerException

public static void testForEach() {
		ArrayList<String> students = new ArrayList<String>();

		students.add("Ram");
		students.add("Mohan");
		students.add("Sohan");
		students.add("Rabi");

		students.forEach((n) -> print(n));
		students.forEach((n) -> System.out.println(n));
		students.forEach(System.out::println);
	}

	public static void print(String n) {
		System.out.println(n);
	}

Output

Ram
Mohan
Sohan
Rabi
Ram
Mohan
Sohan
Rabi
Ram
Mohan
Sohan
Rabi

Java 中的 Arrays.binarySearch()

Arrays.binarySearch() 方法使用二分搜索法算法在给定数据类型的指定数组中搜索指定值。在进行此调用之前,必须按照 Arrays.sort() 方法对数组进行排序。如果没有排序,结果是未定义的。如果数组包含多个具有指定值的元素,则不能保证找到哪一个

语法

public static int binarySearch(data_type arr, data_type key)

**记住:**这里的数据类型可以是任何原始数据类型,例如字节、字符、双精度、int、float、short、long,甚至 object。

参数:

  • Array to be searched
  • Value to be searched

**返回类型:**搜索关键字的索引,如果包含在数组中;否则,(-(插入点)–1)。插入点定义为将键插入数组的点:大于键的第一个元素的索引,如果数组中的所有元素都小于指定的键,则为. length。请注意,这保证了当且仅当找到密钥时,返回值将为> = 0。

public static void testBinarySearch() {
		// 数组初始化
		byte byteArr[] = { 10, 20, 15, 22, 35 };
		char charArr[] = { 'g', 'p', 'q', 'c', 'i' };
		int intArr[] = { 10, 20, 15, 22, 35 };
		double doubleArr[] = { 10.2, 15.1, 2.2, 3.5 };
		float floatArr[] = { 10.2f, 15.1f, 2.2f, 3.5f };
		short shortArr[] = { 10, 20, 15, 22, 35 };

		// 先进行排序
		Arrays.sort(byteArr);
		Arrays.sort(charArr);
		Arrays.sort(intArr);
		Arrays.sort(doubleArr);
		Arrays.sort(floatArr);
		Arrays.sort(shortArr);

		// 目标值
		byte byteKey = 35;
		char charKey = 'g';
		int intKey = 22;
		double doubleKey = 1.5;
		float floatKey = 35;
		short shortKey = 5;

		System.out.println(byteKey + " found at index = " + Arrays.binarySearch(byteArr, byteKey));
		System.out.println(charKey + " found at index = " + Arrays.binarySearch(charArr, charKey));
		System.out.println(intKey + " found at index = " + Arrays.binarySearch(intArr, intKey));
		System.out.println(doubleKey + " found at index = " + Arrays.binarySearch(doubleArr, doubleKey));
		System.out.println(floatKey + " found at index = " + Arrays.binarySearch(floatArr, floatKey));
		System.out.println(shortKey + " found at index = " + Arrays.binarySearch(shortArr, shortKey));
	}

Output

35 found at index = 4
g found at index = 1
22 found at index = 3
1.5 found at index = -1
35.0 found at index = -5
5 found at index = -1
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值