筆記試験問題
A. おなじみのプログラミング言語または疑似コードを使用して、指定された 2 つの順序付けられていないリストにまったく同じ要素が含まれているかどうかを判断する方法を実装してください? (注: リスト内の要素は繰り返すことができます。リストは順序に関係なく互いに置き換えることができます) ps: サードパーティのライブラリや組み込み関数を使用しないでください
package com.duoceshi.test;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
/**
* 2023-02-28
* author:杭州多测师_王sir
*/
public class HasTheSameElement {
public static <T extends Comparable<T>> boolean hasTheSameElement(List<T> list1, List<T> list2){
if (list1 == null && list2 == null) {
return true;
}
else if(list1 == null || list2 == null) {
return false;
}
else if(list1.size() != list2.size()) {
return false;
}
list1 = new ArrayList<T>(list1);
list2 = new ArrayList<T>(list2);
Collections.sort(list1);
Collections.sort(list2);
return list1.equals(list2);
}
public static void main(String[] args) {
List<Integer> list1 = Arrays.asList(1, 2, 3);
List<Integer> list2 = Arrays.asList(1, 2, 3);
List<Integer> list3 = Arrays.asList(2, 1, 3);
Boolean result1 = hasTheSameElement(list1,list2);
System.out.println(result1);
Boolean result2 = hasTheSameElement(list1,list3);
System.out.println(result2);
}
}
B. プログラム インターフェイスが A で説明した機能を実現している場合、インターフェイスの定義は次のようになります。インターフェイスの実装が要件を満たしていることを確認するためのインターフェイス. 言及されていない場合は、必要に応じて合理的な条件付きの仮定を行うことができます. 解釈
: Public Boolean hasTheSameElements(List<T> a, List<T> b); == "これはインターフェイス、インターフェイスには 2 つの入力パラメーターがあり、入力パラメーターは 2 つのリスト コレクション (1 つは a と 1 つは b) で、リストの後ろの <T> はジェネリックを意味します。これは、リスト コレクションの戻り値が任意のデータになる可能性があることを意味します。タイプ。
1.可以把元素的顺序打乱,看判断是否为true
2.元素不一样
3.传参一个为integer一个为string
4.2个传参都为integer
5.2个传参都为string
6.2个传参长度不一致
7.其中一个为空的列表
8.元素都一样,但是用中文格式的逗号
9.传入3个参数验证
10.2个参数都不传入