標籤:.sh nbsp shuf 迴圈 字串數組 err 隨機 tostring src
Collections工具類的使用
public class News implements Comparable { private int id; //新聞編號 private String title; //新聞標題 @Override public String toString() { return "新聞 [編號=" + id + ", 標題=" + title + "]"; } public News() { //無參構造 super(); } public News(int id, String title) { //帶參構造 super(); this.id = id; this.title = title; } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getTitle() { return title; } public void setTitle(String title) { this.title = title; } //重寫 排序的規則 升序 @Override public int compareTo(Object o) { News news=(News) o; if (news.getId()==this.id) { return 0; }else if (news.getId()<this.id) { return 1; // 降序 return -1; }else { return -1; // 降序 return 1; } }}
建立測試類別
public class CollectionsTest { public static void main(String[] args) { /* * 操作集合的工具類Collections * */ //建立一個集合 List<String> list=new ArrayList<String>(); list.add("b"); list.add("d"); list.add("c"); list.add("a"); System.out.println("沒有排序====》"+list); //插入時候的順序 //對集合進行隨機排序 Collections.shuffle(list); //開獎號碼 136 順序必須對 631不對 System.out.println("隨機排序====》"+list); //按照字母的升序排列 Collections.sort(list); System.out.println("升序====》"+list); //降序 也是必須在升序之後 Collections.reverse(list); System.out.println("降序====》"+list); //查詢 "b"在集合中的位置 必須先升序 排列之後再查詢 Collections.sort(list); System.out.println(Collections.binarySearch(list, "a")); System.out.println("****************************"); List<News> news=new ArrayList<News>(); //想實現對象的排序 news.add(new News(3, "新聞3")); news.add(new News(1, "新聞1")); news.add(new News(4, "新聞4")); news.add(new News(2, "新聞2")); for (News news2 : news) { System.out.println(news2); } /* * 如果News沒有重寫Comparable介面中的compareTo()是編譯報錯的! * 我們必須重寫compareTo() 定義規則 */ Collections.sort(news); System.out.println("對象排序之後........."); for (News news2 : news) { System.out.println(news2); } } @Test public void test1(){ //通過String類中的split()把字串轉換成字串數組 String[] str1="a b c d d d".split(" "); //把數群組轉換成集合 List<String> asList = Arrays.asList(str1); System.out.println(asList); String[] str2="c d".split(" "); List<String> asList2= Arrays.asList(str2); //最後一次出現的位置 System.out.println(Collections.lastIndexOfSubList(asList, asList2)); //首次出現的位置 System.out.println(Collections.indexOfSubList(asList, asList2)); } @Test public void test2(){ String[] str1="a b c d e f".split(" "); //把數群組轉換成集合 List<String> list = Arrays.asList(str1); System.out.println(list); //集合中的元素向後移distance個位置,之後被覆蓋的元素迴圈前移 Collections.rotate(list, 2); System.out.println(list); }}
3.map遍曆的效率比較
@Testpublic void test(){ Map<String, Object> map=new HashMap<String, Object>(); for (int i = 0; i <1000000; i++) { map.put("key"+i, "value"+i); } //擷取當前毫秒數 Long a= System.currentTimeMillis(); //遍曆map 首先擷取所有key的集合 Set<String> set = map.keySet(); for (String key : set) { map.get(key); //根據key取得value } //擷取當前毫秒數 Long b= System.currentTimeMillis(); System.out.println("使用keySet遍曆的時間是:"+(b-a)); //使用entry遍曆 效率最高的 Set<Entry<String, Object>> entrySet = map.entrySet(); for (Entry<String, Object> entry : entrySet) { entry.getValue(); } //擷取當前毫秒數 Long c= System.currentTimeMillis(); System.out.println("使用entrySet遍曆的時間是:"+(c-b));}
漢字的排序
public class ListTest { public static void main(String[] args) { //實現都漢字的排序 傳入一個語言環境 Comparator<Object> collator=Collator.getInstance(Locale.CHINA); ArrayList<String> list=new ArrayList<String>(); list.add("你好"); list.add("好"); list.add("啊"); list.add("它好"); //工具類 Collections.sort(list, collator); for (String string : list) { System.out.println(string); } }}
java集合架構03