因此,這種可憎的代碼創建基於用戶輸入的數組。樣品輸入會是這樣的 「S 4 ABA BAB BAA AAB」 其中:Java泛型(工作代碼,但不漂亮..也不高效)
ARGS [0] =陣列型(中間體,雙,字符串)
ARGS [1] =陣列的長度
args [2 ...] =數組的內容
在我的代碼中創建數組是非常可怕的,但我不太確定如何在合併泛型時做到這一點。代碼的要點是能夠將創建的數組傳遞給底部的方法,因此是泛型。
感謝您提前提出任何意見!
import java.io.FileNotFoundException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashSet;
public class ArrayGenerics<E> {
public static void main(String[] args) throws FileNotFoundException {
checkUsage(args);
我的問題是在這裏: 我有迴路,以填補數組中,並呼籲在每個有條件的方法,這讓我覺得我能以這樣的方式,這是不是這樣反覆重寫此。
if (args[0].matches("I|i")) {
ArrayList<Integer> iL = new ArrayList<Integer>();
for (int i = 2; i < args.length; i++) {
iL.add(Integer.parseInt(args[i]));
}
System.out.println("Original: " + iL);
System.out.println(" Unique: " + removeDuplicates(iL));
shuffle(iL);
System.out.println("Shuffled: " + iL);
System.out.println(" Maximum: " + max(iL));
} else if (args[0].matches("S|s")) {
ArrayList<String> sL = new ArrayList<String>();
for (int i = 2; i < args.length; i++) {
sL.add(args[i]);
}
System.out.println("Original: " + sL);
System.out.println(" Unique: " + removeDuplicates(sL));
shuffle(sL);
System.out.println("Shuffled: " + sL);
System.out.println(" Maximum: " + max(sL));
} else {
ArrayList<Double> dL = new ArrayList<Double>();
for (int i = 2; i < args.length; i++) {
dL.add(Double.parseDouble(args[i]));
}
System.out.println("Original: " + dL);
System.out.println(" Unique: " + removeDuplicates(dL));
shuffle(dL);
System.out.println("Shuffled: " + dL);
System.out.println(" Maximum: " + max(dL));
}
}
問題
public static <E> ArrayList<E> removeDuplicates(ArrayList<E> list) {
new HashSet<E>(list);
list = new ArrayList<E>(new HashSet<E>(list));
return list;
}
public static <E> void shuffle(ArrayList<E> list) {
Collections.shuffle(list);
}
public static <E extends Comparable<E>> E max(ArrayList<E> list) {
return Collections.max(list);
}
public static void checkUsage(String[] args)
{
if (args.length < 2)
{
System.out.println("Please supply more than 2 arguments");
System.exit(1);
}
if (!(args[0]=="s") && (args[0]=="S") &&
(args[0]=="d") && (args[0]=="D") &&
(args[0]=="i") && (args[0]=="I")){
System.out.println("Incorrect format of command.");
System.exit(1);
}
}
}
你的問題到底是什麼重刑? –
每個條件使用提供的參數填充數組,並調用方法。我調用每個條件中的方法的事實使我認爲,我可以以某種方式配置代碼,以便在條件之後調用方法以避免重複代碼。我編輯了這篇文章,希望能更好地澄清它。 –
如果您正在尋找關於改善已經運行的代碼的反饋,Stack Overflow不是適合它的地方。您應該將其提交給我們的姊妹網站[代碼評論](https://codereview.stackexchange.com/)。 –