public class DuplicatesInArray {
public static void main(String[] args) {
String[] strArray1 = {"abc1", "def1", "mno1", "xyz1", "pqr1", "xyz1", "def1"};
for (int i = 0; i < strArray1.length-1; i++) {
for (int j = i+1; j < strArray1.length; j++) {
if( (strArray1[i].equals(strArray1[j])) && (i != j) ) {
System.out.println("Duplicates : "+strArray1[j]);
}}}} }
输出:重复元素为:def1 重复元素为:xyz1
24)我们可以将泛型与数组一起使用吗?
不,我们不能将泛型与数组一起使用。
25)如何在 java 中迭代数组?
1)使用普通 for 循环
public class MainClass1
{
public static void main(String[] args)
{
int[] a1 = new int[]{45, 12, 78, 34, 89, 21};
//Iterating over an array using normal for loop
for (int i = 0; i < a1.length; i++)
{
System.out.println(a1[i]);
}}}
2)使用扩展的新 for 循环
public class MainClass1
{
public static void main(String[] args)
{
int[] a2 = new int[]{45, 12, 78, 34, 89, 21};
//Iterating over an array using extended for loop
for (int i: a2){
System.out.println(i);
}}}
26)Java 中数组的内存分配在哪里?
在 Java 中,数组的内存总是分配在堆上,因为 Java 中的数组是对象。
27) 你能告诉我 Java 中数组的类名吗?
数组是一个对象。要获取类名,我们可以对对象使用 getClass().getName() 方法。
28)“int a[] = new int[3]{1, 2, 3}”——这是定义数组的合法方式吗?
不。我们在提供数组元素时不应该声明数组的大小。
29)什么是二维数组?
Java 中的数组的数组。我们可以像这样声明它们
int[][] p = new int[3][3]
这是一个 3×3 的矩阵。
30)Java 中有三维数组吗?
是的,Java 支持 N 维数组。Java 中的多维数组不过是数组的数组,例如:二维数组是一维数组的数组。
int n = ar.length+1;
int total = n*(n+1)/2;
for(int i =0;i<ar.length;i++){
total -=ar[i];}
System.out.println(total);
37) 如何找出数组中的重复项?
String str = "HI RAHUL I AM FINE RAHUL"; // String with a duplicate word.
String[] words = str.split(" "); // Splitting and converting to Array .
for(int i = 0; i < words.length; i++){ //iterating array inside for loop
for(int j = i+1; j < words.length; j++){ //iterating same array inside another for loop
if (words[i].equals(words[j])){ // Using equal method i am verifying which word is repeating . System.out.println( words[i]); // here it will print duplicate .
}}}
38) 如何检查数组是否包含值?
这是一个带有值的 String[]
public static final String[] myNames = new String[] {"B","A","K","C"};
public static <T> boolean contains(final T[] array, final T v) {
for (final T e : array) { if (e == v || v != null && v.equals(e)) {
return true;
} }
return false;
} }
39)如何获取数组中的最大数和最小数?
答:本题逻辑:
我们使用两个变量来存储最大数字和最小数字。
首先,我们用 Integer.MIN_VALUE 初始化最大值,
接下来,我们用 Integer.MAX_VALUE 初始化最小值。
在 for 循环的每次迭代中,我们将比较当前数字与最大数字和最小数字,然后更新
如果一个数字大于最大值,那么它就不能小于最小值。这意味着不需要检查第一个条件是否为真,
我们将使用 if-else 代码块,其中 else 部分仅当第一个条件为假(即不真)时才会执行。
import java.util.Arrays;
public class MaximumMinimumArrayExample{
public static void largestAndSmallest(int[] numbers) {
int largest = Integer.MIN_VALUE;
int smallest = Integer.MAX_VALUE;
for (int number : numbers) {
if (number > largest) {
largest = number;
}
else if (number < smallest) {
smallest = number;
} }
System.out.println("Largest is : " + largest);
System.out.println("Smallest is : " + smallest); } }
40)如何对两个已排序数组进行交集?
答案:逻辑:如果元素存在或在两个数组中可用,则打印该元素。
使用两个索引变量 i 和 j,之后初始值 i = 0,j = 0
如果 arr01 [i] 小于 arr02 [j] 则增加 i。
如果 arr01 [i] 大于 arr02 [j] 则增加 j。
如果两者相同,则打印其中任何一个并增加 i 和 j。
public static void getIntersection(int arr01[], int arr02[], int m, int n){
int i = 0, j = 0;
while (i < m && j < n){
if (arr01[i] < arr02[j])
i++;
else if (arr02[j] < arr01[i])
j++;
else{
System.out.print(arr02[j++]+" ");
i++;
}
}
}
public static void main(String args[]){
int arr01[] = {1, 2, 4, 5, 6};
int arr02[] = {2, 3, 5, 7};
int m = arr01.length;
int n = arr02.length;
getIntersection(arr01, arr02, m, n);
}
41)如何从数组中获取前两个数字?
答:逻辑是:
我们将用 Integer.MIN_VALUE 分配第一个变量 max01
此外,第二个变量max02与max01相同,即Integer.MIN_VALUE。
我们将迭代此数组并将每个数字与 max01 和 max02 进行比较,
如果当前数字大于 max1,则分配 max01 = 数字和 max02 = max1。
否则,如果它仅大于 max02,那么我们将仅使用当前数字更新 max02。
在迭代结束时,max01 和 max02 指向给定数组的前两个数字。
import java.util.Arrays;
public class TopTwoMaximumNumbers{
public static void main(String args[]) {
topTwoNumbers(new int[]{20, 34, 21, 87, 92, Integer.MAX_VALUE});
topTwoNumbers(new int[]{0, Integer.MIN_VALUE, -2});
topTwoNumbers(new int[]{Integer.MAX_VALUE, 0, Integer.MAX_VALUE});
topTwoNumbers(new int[]{1, 1, 0}); }
public static void topTwoNumbers(int[] numbers) {
int max01 = Integer.MIN_VALUE;
int max02 = Integer.MIN_VALUE; for (int number : numbers) {
if (number > max01) { max02 = max01; max01 = number; }
else if (number > max02) { max02 = number; } }
System.out.println("First largest number is : " + max01);
System.out.println("Second largest number is : " + max02); } }
import java.util.Arrays;
import org.apache.commons.lang.ArrayUtils;
public class RemoveFromArray{
public static void main(String args[]) {
//let's create an array for demonstration purpose
int[] testArr = new int[] { 10, 102, 13, 14, 105};
System.out.println("Array size : " + testArr.length );
System.out.println("Find Contents : " + Arrays.toString(testArr));
//let's remove or delete an element from Array using Apache Commons ArrayUtils
testArr = ArrayUtils.remove(testArr, 2); //removing element at index 2
//Size of array must be 1 less than original array after deleting an element
System.out.println("Size of array after removing : " + testArr.length);
System.out.println("Content of Array : "+ Arrays.toString(testArr));
} }
43)反转数组的逻辑是什么?
答:逻辑:以相反的顺序打印元素。
声明一个
String Array String[] s = new String[]{"My","Leg","is","cut"};
使用 for 循环进行迭代,以相反的顺序获取所有元素,即从终点到起点。
public static void main(String[] args)
{String[] s = new String[]{"My","Leg","is","cut"};
for(int i=s.length-1; i>=0; i--){
System.out.println("reverse "+s[i]);}}
44) 如何找到整数数组中第二大元素?
答:逻辑是:
使用 for 循环迭代给定的数组。
(第一个 if 条件 arr[i] > 最大):
如果当前数组值大于最大值,则
将最大值移动到第二大值,并使当前值成为最大值
(第二个 if 条件 arr[i] > secondLargest )
如果当前值小于最大值,并且
大于 secondLargest 则当前值变为
public static void main(String[] args) {
int myArr[] = { 14, 46, 47, 86, 92, 52, 48, 36, 66, 85 };
int largest = myArr[0];
int secondLargest = myArr[0];
System.out.println("The given array is:" );
for (int i = 0; i < myArr.length; i++) {
System.out.print(myArr[i]+"\t");
}
for (int i = 0; i < myArr.length; i++) {
if (myArr[i] > largest) {
secondLargest = largest;
largest = myArr[i];
} else if (myArr[i] > secondLargest) {secondLargest = myArr[i];
}}
System.out.println("\nSecond largest number is:" + secondLargest);
}
45)编写一个程序来对给定数组的值进行求和。
答:逻辑是:
声明并分配 int 变量,即 sum =0。
使用 for 循环迭代给定的数组。
将所有数组元素相加并将其保存在此变量中,即为总和。
Public static void main(String[] args) {
int my_array[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
int sum = 0;
for (int i: my_array)
sum += i;
System.out.println("The sum is " + sum);
}
import java.util.*;
public class FillTest {
public static void main(String args[]) {
int array[] = new int[6];
Arrays.fill(array, 100);
for (int i = 0, n = array.length; i < n; i++) {
System.out.println(array[i]);
}
System.out.println();
Arrays.fill(array, 3, 6, 50);
for (int i = 0, n = array.length; i< n; i++) {
System.out.println(array[i]);}}}
那么将数组作为参数传递给函数怎么样
Q14 a[] 和 []a 之间的区别
在第一个类型声明之后,您不能创建另一个(相同数据类型)数组。
但您可以在第二种类型声明之后。
int []a,b,c = new int[size]