Java常用演算法

來源:互聯網
上載者:User

標籤:file   for   val   length   重複   不重複   map   bar   result   

2017-07-061 去重1.1 去重
    //去重複,需要額外定義一個List    public static void RemoveRepeat(List<Integer> arrs) {        List<Integer> tmp = new ArrayList<Integer>();        Iterator<Integer> it = arrs.iterator();        while (it.hasNext()) {            int a = it.next();            if (tmp.contains(a))                it.remove();            else                tmp.add(a);        }    }
1.2 去不重
    // 去不重複的數,用的是選擇排序演算法變化版    public static void RemoveNoRepeat(List<Integer> arrs) {        Boolean isRepeate = false;        for (int i = 0; i < arrs.size(); i++) {            isRepeate = false;            for (int j = 0; j < arrs.size(); j++) {                if (arrs.get(i) == arrs.get(j) && i != j) {                    isRepeate = true;                    break;                }            }            if (!isRepeate) {                arrs.remove(i);                i--;            }        }    }    public static void RemoveNoRepeatImprove(List<Integer> arrs) {        Boolean isRepeate = false;        for (int i = arrs.size() - 1; i >= 0; i--) {            isRepeate = false;            for (int j = arrs.size() - 1; j >= 0; j--) {                if (arrs.get(i) == arrs.get(j) && i != j) {                    isRepeate = true;                    break;                }            }            if (!isRepeate) {                arrs.remove(i);            }        }    }    public static void RemoveNoRepeatWithExtraMap(List<Integer> arrs) {        Map<Integer, Integer> repeat = CountRepeat(arrs);        for (int i = arrs.size() - 1; i >= 0; i--) {            if (repeat.get(arrs.get(i)) == 1) {                arrs.remove(i);            }        }    }    // 統計重複數    public static Map<Integer, Integer> CountRepeat(List<Integer> arrs) {        Map<Integer, Integer> map = new HashMap<Integer, Integer>();        Integer value = 0;        for (Integer arr : arrs) {            if (map.containsKey(arr)) {                value = map.get(arr);                map.put(arr, value + 1);            } else {                map.put(arr, 1);            }        }        return map;    }
2 隨機分配
    public static Map<String, String> TicketDispatch(List<String> customers, List<String> tickets) {        Map<String, String> result = new HashMap<String, String>();        Random r = new Random();        int iCustomer;        int iTicket;        for (int i = customers.size(); i > 0; i--) {            // 取值範圍[0,i)            iCustomer = r.nextInt(i);            iTicket = r.nextInt(tickets.size());            result.put(customers.get(iCustomer), tickets.get(iTicket));            customers.remove(iCustomer);            tickets.remove(iTicket);        }        return result;    }
3 遞迴
    //Java遞迴刪除一個目錄下檔案和檔案夾    private static void deleteDir(File dir) {        if (dir.isDirectory()) {            String[] children = dir.list();            // 遞迴刪除目錄中的子目錄下            for (int i=0; i<children.length; i++) {               deleteDir(new File(dir, children[i]));                           }        }        dir.delete();    }

Java常用演算法

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.