集合框架
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了集合框架 相关的知识,希望对你有一定的参考价值。
1 Collections
1.1 概述
- 此类完全由在Collection上进行操作或返回Collection的静态方法组成。
1.2 Collections的排序
- 根据元素的自然顺序对指定列表按升序进行排序。
public static <T extends Comparable<? super T>> void sort(List<T> list)
- 根据指定比较器产生的顺序对指定列表进行排序。
public static <T> void sort(List<T> list,Comparator<? super T> c)
- 示例:
package java17; import java.util.ArrayList; import java.util.Collections; import java.util.List; /** * 2017/10/10 * 说明: */ public class CollectionsDemo { public static void main(String[] args) { List<String> list = new ArrayList<>(); list.add("abcde"); list.add("cdb"); list.add("aaa"); list.add("zzz"); list.add("cdb"); System.out.println("排序前:"+list); Collections.sort(list); System.out.println("排序后:"+list); } }
1.3 二分查找法
- 使用二分查找法搜索指定列表,以获取指定对象
public static <T> int binarySearch(List<? extends Comparable<? super T>> list, T key)
- 使用二分查找法搜索指定列表,以获取指定对象
public static <T> int binarySearch(List<? extends T> list, T key, Comparator<? super T> c)
- 示例:
package java17; import java.util.ArrayList; import java.util.Collections; import java.util.List; /** * 2017/10/10 * 说明: */ public class CollectionsDemo { public static void main(String[] args) { List<String> list = new ArrayList<>(); list.add("abcde"); list.add("cdb"); list.add("aaa"); list.add("zzz"); list.add("cdb"); Collections.sort(list); int index = Collections.binarySearch(list,"aaa"); System.out.println(index); } }
1.4 最值
- 根据元素的自然顺序,返回指定Collection的最大元素。
public static <T extends Object & Comparable<? super T>> T max(Collection<? extends T> coll)
- 根据指定的比较器产生的顺序,返回指定Collection的最大元素。
public static <T> T max(Collection<? extends T> coll, Comparator<? super T> comp)
- 根据元素的自然顺序,返回指定Collection的最小元素。
public static <T extends Object & Comparable<? super T>> T min(Collection<? extends T> coll)
- 根据指定比较器产生的顺序,返回指定Collection的最大元素。
public static <T> T min(Collection<? extends T> coll, Comparator<? super T> comp)
- 示例:
package java17; import java.util.ArrayList; import java.util.Collections; import java.util.List; /** * 2017/10/10 * 说明: */ public class CollectionsDemo { public static void main(String[] args) { List<String> list = new ArrayList<>(); list.add("abcde"); list.add("cdb"); list.add("aaa"); list.add("zzz"); list.add("cdb"); System.out.println("最大值:"+Collections.max(list)); System.out.println("最小值:"+Collections.min(list)); } }
1.5 逆序&替换
- 返回一个比较器,它强行逆转了Comparable接口的对象Collection的自然顺序。
public static <T> Comparator<T> reverseOrder()
- 返回一个比较器,它强行逆转了指定比较器的顺序。
public static <T> Comparator<T> reverseOrder(Comparator<T> cmp)
- 示例:
package java17; import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.TreeSet; /** * 2017/10/10 * 说明: */ public class CollectionsDemo { public static void main(String[] args) { TreeSet<String> set = new TreeSet<>(); set.add("abcde"); set.add("cdb"); set.add("aaa"); set.add("zzz"); System.out.println(set); } }
package java17; import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.TreeSet; /** * 2017/10/10 * 说明: */ public class CollectionsDemo { public static void main(String[] args) { TreeSet<String> set = new TreeSet<>(Collections.reverseOrder()); set.add("abcde"); set.add("cdb"); set.add("aaa"); set.add("zzz"); System.out.println(set); } }
- 使用另一个值替换列表中出现的所有某一指定值。
public static <T> boolean replaceAll(List<T> list, T oldVal, T newVal)
- 示例:
package java17; import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.TreeSet; /** * 2017/10/10 * 说明: */ public class CollectionsDemo { public static void main(String[] args) { List<String> list = new ArrayList<>(); list.add("abcde"); list.add("cdb"); list.add("aaa"); list.add("zzz"); Collections.replaceAll(list,"cdb","bdc"); System.out.println(list); } }
1.6 将非线程安全的集合类装换为线程安全的集合类
- 返回指定Collection支持的同步Collection。
public static <T> Collection<T> synchronizedCollection(Collection<T> c)
- 返回指定列表支持的同步列表。
public static <T> List<T> synchronizedList(List<T> list)
- 返回指定映射支持的同步映射。
public static <K,V> Map<K,V> synchronizedMap(Map<K,V> m)
- 返回指定set支持的同步set。
public static <T> Set<T> synchronizedSet(Set<T> s)
- 返回指定有序映射支持的同步有序映射。
public static <K,V> SortedMap<K,V> synchronizedSortedMap(SortedMap<K,V> m)
- 返回指定有序Set支持的同步有序Set。
public static <T> SortedSet<T> synchronizedSortedSet(SortedSet<T> s)
2 Arrays
2.1 概述
- 此类包含用来操作数组的各种方法,如排序和搜索等。
2.2 一些示例方法
- 返回指定数组内容的字符串表现形式。
public static String toString(int[] a)
- 示例:
package java17; import java.util.Arrays; /** * 2017/10/11 * 说明: */ public class ArraysDemo { public static void main(String[] args) { int[] arr = new int[]{1,5,8,3,2}; System.out.println("调用Arrays方法之前:"+arr); System.out.println("调用Arrays方法之后:"+Arrays.toString(arr)); } }
- 返回一个受指定数组支持的国定大小的列表。
public static <T> List<T> asList(T... a)
- 示例:
package java17; import java.util.Arrays; import java.util.List; /** * 2017/10/11 * 说明: */ public class ArraysDemo { public static void main(String[] args) { String[] arr = new String[]{"abc","cdg","efg","sfg"}; List<String> list = Arrays.asList(arr); System.out.println(list.contains("sfg")); } }
- 从上面的示例中,我们可以看出将数组转为集合,有这样的好处:就是可以使用集合的方法操作数据的元素。
- 示例:
package java17; import javax.net.ssl.SSLContext; import java.util.Arrays; import java.util.List; /** * 2017/10/11 * 说明: */ public class ArraysDemo { public static void main(String[] args) { String[] arr = new String[]{"abc","cdg","efg","sfg"}; List<String> list = Arrays.asList(arr); list.add("aa"); System.out.println("list:"+list); } }
- 从上面的示例中,我们知道对于数组转换过来的集合是不可以进行增删功能的(UnSupportedOperationException异常),因为数组的长度是固定的。
- 注意:在数组转集合过程中,①如果数组中的元素是对象,那么转成集合时,直接将数组中的元素作为集合中的元素进行存储。②如果数组中的元素是基本数据类型,那么会将该数组作为集合中的元素进行存储。
package java17; import javax.net.ssl.SSLContext; import java.util.Arrays; import java.util.List; /** * 2017/10/11 * 说明: */ public class ArraysDemo { public static void main(String[] args) { int[] arr = new int[]{1,3,4,5}; List<int[]> list = Arrays.asList(arr); System.out.println("list:"+list.toString()); } }
以上是关于集合框架 的主要内容,如果未能解决你的问题,请参考以下文章
text 来自Codyhouse框架的Browserlist片段源代码