`

JAVA知识梳理(三)

    博客分类:
  • java
 
阅读更多

 

1、集合类结构




 

2、集合的工具类:Collections

在 Java集合类框架里有两个类叫做Collections(注意,不是Collection!)和Arrays,这两个类提供了封装器实现(Wrapper Implementations)、数据结构算法和数组相关的应用。 

Collections类提供了丰富的静态方法:

1) 排序(Sort)

使用sort方法可以根据元素的自然顺序 对指定列表按升序进行排序。列表中的所有元素都必须实现 Comparable 接口。此列表内的所有元素都必须是使用指定比较器可相互比较的

 

double array[] = {112, 111, 23, 456, 231 };
for (int i = 0; i < array.length; i++) {
list.add(new Double(array[i]));
}
Collections.sort(list);
for (int i = 0; i < array.length; i++) {
System.out.println(li.get(i));
}

//结果:112,111,23,456,231
 

 

2) 混排(Shuffling)

混排算法所做的正好与 sort 相反: 它打乱在一个 List 中可能有的任何排列的踪迹。也就是说,基于随机源的输入重排该 List,这样的排列具有相同的可能性(假设随机源是公正的)。这个算法在实现一个碰运气的游戏中是非常有用的。例如,它可被用来混排代表一副牌的 Card 对象的一个 List .另外,在生成测试案例时,它也是十分有用的。

 

Collections.Shuffling(list)
double array[] = {112, 111, 23, 456, 231 };
for (int i = 0; i < array.length; i++) {
list.add(new Double(array[i]));
}
Collections.shuffle(list);
for (int i = 0; i < array.length; i++) {
System.out.println(li.get(i));
}
//结果:112,111,23,456,231 
 

 

3) 反转(Reverse)

使用Reverse方法可以根据元素的自然顺序 对指定列表按降序进行排序。

 

Collections.reverse(list)
double array[] = {112, 111, 23, 456, 231 };
for (int i = 0; i < array.length; i++) {
list.add(new Double(array[i]));
}
Collections. reverse (list);
for (int i = 0; i < array.length; i++) {
System.out.println(li.get(i));
}
//结果:231,456,23,111,112
 

 

4) 替换所有的元素(Fill)

使用指定元素替换指定列表中的所有元素。

String str[] = {"dd","aa","bb","cc","ee"};
for(int j=0;j
li.add(new String(str[j]));
}
Collections.fill(li,"aaa");
for (int i = 0; i < li.size(); i++) {
System.out.println("list[" + i + "]=" + li.get(i));

}
//结果:aaa,aaa,aaa,aaa,aaa

 

5) 拷贝(Copy)

用两个参数,一个目标 List 和一个源 List, 将源的元素拷贝到目标,并覆盖它的内容。目标 List 至少与源一样长。如果它更长,则在目标 List 中的剩余元素不受影响。

Collections.copy(list,li): 后面一个参数是目标列表 ,前一个是源列表

double array[] = {112, 111, 23, 456, 231 };
List list = new ArrayList();
List li = new ArrayList();
for (int i = 0; i < array.length; i++) {
list.add(new Double(array[i]));
}
double arr[] = {1131,333};
String str[] = {"dd","aa","bb","cc","ee"};
for(int j=0;j<arr.length;j++){
li.add(new Double(arr[j]));
}
Collections.copy(list,li);
for (int i = 0; i
System.out.println("list[" + i + "]=" + list.get(i));
}
//结果:1131,333,23,456,231

 

6) 返回Collections中最小元素(min)

根据指定比较器产生的顺序,返回给定 collection 的最小元素。collection 中的所有元素都必须是通过指定比较器可相互比较的

Collections.min(list)

double array[] = {112, 111, 23, 456, 231 };
List list = new ArrayList();
for (int i = 0; i < array.length; i++) {
list.add(new Double(array[i]));
}
Collections.min(list);
for (int i = 0; i
System.out.println("list[" + i + "]=" + list.get(i));
}

 

//结果:23

7) 返回Collections中最大元素(max)

根据指定比较器产生的顺序,返回给定 collection 的最大元素。collection 中的所有元素都必须是通过指定比较器可相互比较的

Collections.max(list)

double array[] = {112, 111, 23, 456, 231 };
List list = new ArrayList();
for (int i = 0; i < array.length; i++) {
list.add(new Double(array[i]));
}
Collections.max(list);
for (int i = 0; i
System.out.println("list[" + i + "]=" + list.get(i));
}
//结果:456

 

8) lastIndexOfSubList

返回指定源列表中最后一次出现指定目标列表的起始位置,即按从后到前的顺序返回子List在父List中的索引位置。

int count = Collections.lastIndexOfSubList(list,li);
double array[] = {112, 111, 23, 456, 231 };
List list = new ArrayList();
List li = new ArrayList();
for (int i = 0; i < array.length; i++) {
list.add(new Double(array[i]));
}
double arr[] = {111};
String str[] = {"dd","aa","bb","cc","ee"};
for(int j=0;j
li.add(new Double(arr[j]));
}
Int locations = Collections. lastIndexOfSubList (list,li);
System.out.println(“===”+ locations);
//结果 3

 

9) IndexOfSubList

返回指定源列表中第一次出现指定目标列表的起始位置

int count = Collections.indexOfSubList(list,li);
double array[] = {112, 111, 23, 456, 231 };
List list = new ArrayList();
List li = new ArrayList();
for (int i = 0; i < array.length; i++) {
list.add(new Double(array[i]));
}
double arr[] = {111};
String str[] = {"dd","aa","bb","cc","ee"};
for(int j=0;j
li.add(new Double(arr[j]));
}
Int locations = Collections.indexOfSubList(list,li);
System.out.println(“===”+ locations);
//结果 1

 

10) Rotate

根据指定的距离循环移动指定列表中的元素

Collections.rotate(list,-1);

如果是负数,则正向移动,正数则方向移动

double array[] = {112, 111, 23, 456, 231 };

List list = new ArrayList();

for (int i = 0; i < array.length; i++) {

list.add(new Double(array[i]));

}

Collections.rotate(list,-1);

for (int i = 0; i

System.out.println("list[" + i + "]=" + list.get(i));

}

//结果:111,23,456,231,112

11)static int binarySearch(List list,Object key)

   使用二分搜索查找key对象的索引值,因为使用的二分查找,所以前提是必须有序。

12)static Object max(Collection coll)

   根据元素自然顺序,返回集合中的最大元素

13)static Object max(Collection coll,Compare comp)

   根据Comparator指定的顺序,返回给定集合中的最小元素

14)static Object min(Collection coll)

   根据元素自然顺序,返回集合中的最大元素

15)static Object min(Collection coll,Compare comp)

   根据Comparator指定的顺序,返回给定集合中的最小元素

16)static void fill(List list,Object obj)

   使用指定元素替换指定集合中的所有元素

17)static int frequency(Collection c,Object o)

   返回指定元素在集合中出现在次数

18)static int indexOfSubList(List source, List target)

   返回子List对象在父List对象中第一次出现的位置索引; 如果父List中没有出现这样的子List,则返回-1

19)static int lastIndexOfSubList(List source,List target)

   返回子List对象在父List对象中最后一次出现的位置索引,如果父List中没有出现这样的子List,刚返回-1

20)static boolean replaceAll(List list,Object oldVal,Object newVal)

  使用一个新值newVal替换List对象所有旧值oldVal

21)synchronizedXXX(new XXX)

      Collections类为集合类们提供的同步控制方法

 

public class SynchronizedTest
{
      public static void main(String[] args){
            Collection collection = Collections.synchronizedCollections(new ArrayList());
            List list = Collections.synchronizedList(new ArrayList());
            Set s = Collections.synchronizedSet(new HashSet());
            Map s = Collections.synchronizedMap(new HashMap()):
      }
}

 

22)emptyXXX()

   返回一个空的、不可变的集合对象,此处的集合既可以是List,也可以是Set,还可以是Map。

23)singletonXXX()

   返回一个只包含指定对象(只有一个或一项元素)的、不可变的集合对象,此处集合既可以是List,也可以是Set,还可以是Map。

24)unmodificableXXX()

   指定返回集合对象的不可变视图,此处的集合既可以是Lsit,也可以是Set,Map

 

 

 

  • 大小: 40.7 KB
分享到:
评论

相关推荐

    Java基础知识整理

    Java基础知识整理 Java是一种广泛应用于软件开发的编程语言,拥有丰富的基础知识体系。本文将对Java基础知识进行系统性的整理和总结,涵盖面向对象、访问控制权限、Final关键字、内部类、集合等多个方面的知识点。 ...

    JAVA核心面试知识点整理

    JAVA核心面试知识点整理 Java是目前企业开发中最常用的编程语言之一,Java面试知识点涵盖了Java语言的方方面面,包括Java基础知识、Java高级知识、Java设计模式、Java框架等等。以下是Java核心面试知识点的整理。 ...

    JAVA核心知识点整理.pdf

    Java是一种广泛使用的面向对象编程语言,其核心特性之一就是多态性。多态性赋予了Java代码灵活性和可扩展性,使得程序可以处理多种不同类型的对象而无需知道具体...在实际开发中,这些知识点是Java程序员必备的基础。

    JAVA核心面试知识整理.pdf

    Java核心面试知识整理包括了对JVM内存区域、垃圾回收机制、GC算法、JVM类加载机制、Java集合框架以及Java IO/NIO等多个方面的深入讲解。以下是对这些知识点的详细介绍: JVM内存区域:JVM内存区域包括了程序计数器...

    JAVA面试核心知识点整理(283页).pdf

    JAVA面试核心知识点整理 本文档旨在为Java开发者提供一个 hệ thống的面试知识点整理,涵盖了Java的核心概念、JVM的工作原理、Java编程语言的基本语法和高级特性等多方面的知识点。下面是对该文档的详细解读。 ...

    Java基础知识梳理

    "Java基础知识梳理" Java 是一种广泛使用的编程语言,适合初学者对 Java 相关知识的总结。下面是 Java 基础知识的梳理: 一、Java 开发环境 * JDK(Java Development Kit):可以开发编译与运行 JAVA 程序的工具...

    java 知识点整理

    Java知识点整理 Java是一种广泛使用的面向对象的编程语言,它具有丰富的API(应用程序接口)和强大的功能。在Java考试中,掌握以下知识点至关重要: 1. **JAVA SE**(Java标准版)是Java的核心部分,包括基础语法...

    java相关知识整理

    Java是一种广泛使用的面向对象的编程语言,以其跨平台、健壮性和安全性著称。本资料主要涵盖了Java...通过阅读“Java整理.docx”、“java知识.docx”和“JAVA基础知识.docx”文档,你可以更系统地学习和复习这些知识。

    JAVA核心知识点整理

    本文将深入探讨在"JAVA核心知识点整理"中涉及的关键概念和技术。 一、Java基础 Java的基础知识包括语法、面向对象特性(封装、继承、多态)、异常处理、输入/输出流以及集合框架。了解基本类型、类、接口、包的概念...

    JAVA核心知识点整理.zip

    "JAVA核心知识点整理.zip"这个压缩包文件包含了对Java进阶学习的重要知识点的详细概述,主要集中在PDF文档"JAVA核心知识点整理.pdf"中。以下是这份资料可能涵盖的主要内容: 1. **Java基础**:首先,你会学到Java的...

    JAVA核心知识点整理.rar

    JAVA核心知识点整理--》从Java基础--&gt;Java数据结构--&gt;框架--&gt;Java中间件,缓存JAVA核心知识点整理--》从Java基础--&gt;Java数据结构--&gt;框架--&gt;Java中间件,缓存JAVA核心知识点整理--》从Java基础--&...

    Java核心面试知识整理.pdf

    通过对这些知识的梳理,能够帮助Java开发者更好地准备面试,同时也加深对Java技术的了解和掌握。 首先,关于JVM的知识点,JVM(Java Virtual Machine)是运行Java程序的核心虚拟机,它可以将Java字节码转换为具体...

    java知识集合

    由于文件内容包含了一些链接,指向具体的GitHub项目,说明作者在整理Java知识点的过程中还参考了网上的资源,并结合自己的思考进行了整理。这些项目是作者为了学习目的而进行的公开分享,内容可能涉及到机器学习、...

    JAVA架构知识库整理 PDF版 查阅方便

    Java架构知识库整理PDF版是一份详尽的资源,涵盖了Java开发和架构设计的各个方面,旨在为Java学习者提供一个全面的学习指南。这份文档可能包含了从基础语法、面向对象编程概念,到高级并发处理、内存管理、性能优化...

    本项目用于从头开始梳理Java知识体系,梳理路线为,Java基础—Java高级—Java并发—常用框架—常用中间件—.zip

    java基础知识学习资料 java开发实践案例 项目学习 源代码 供参考java基础知识学习资料 java开发实践案例 项目学习 源代码 供参考java基础知识学习资料 java开发实践案例 项目学习 源代码 供参考java基础知识学习资料...

    JAVA架构知识库整理 JAVA架构知识 Java架构师 Java 架构师必备

    2.1. 线柱2.2.... JAVA8 与元数据.2.4. 垃圾回收与算法2.4.1. 如何确定垃圾2.4.1.1. 引用计数法.2.4.1.2. 可达性分析.2.4.2. 标记清除算法(Mark-Sweep)2.4.3. 复制算法(copying)2.4.4. 标记整理算法(Mark-Comp

    java 基础知识总结

    自己在网上找的相对好一点的java复习资料,留个纪念 。详细讲述了Java课程的知识点

    java知识点梳理

    文档梳理了Java基本语法知识——环境搭建、数据类型、运算符、控制流、数组、Arrays类、字符串、类和对象、对象的生成与销毁、Java包&方法调用&访问控制、封装和继承、多态、继承链、抽象类和接口等等。

Global site tag (gtag.js) - Google Analytics