java之路,集合类

简介: 集合框架: 所谓框架就是一个类库的集合。集合框架就是一个用来表示和操作集合的统一的架构,包含了实现集合的接口与类。 Collection:集合层次中的根接口,JDK没有提供这个接口直接的实现类。

集合框架:
所谓框架就是一个类库的集合。集合框架就是一个用来表示和操作集合的统一的架构,包含了实现集合的接口与类。
Collection:集合层次中的根接口,JDK没有提供这个接口直接的实现类。集合就是对象,它表示了一组对象。
Set:不能包含重复的元素。SortedSet是一个按照升序排列元素的Set。
List:是一个有序的集合,可以包含重复的元素。提供了按索引访问的方式。所谓有序是指List中元素按照一定的次序摆放
Map:包含了key-value对。Map不能包含重复的key。SortedMap是一个按照升序排列key的Map。

ArrayList:我们可以将其看作是能够自动增长容量的数组。
利用ArrayList的toArray()返回一个数组。
Arrays.asList()返回一个列表。
迭代器(Iterator) 给我们提供了一种通用的方式来访问集合中的元素

import java.util.*
class ArrayListTest
{
 public static void printElements(Collection c)   //打印元素
 {
  Iterator it = c.itorater();
  while(it.hasNext())
  {
   System.out.println(it.next); 
  }
 }
 public static void main(String[] args)
 {
  ArrayList a1 = new ArrayList();
  a1.add("zs");
  a1.add("ls");
  a1.add("ww");
  printElement(a1);
  
  a1.add(new Point(0,0));
  a1.add(new Point(1,1));
  a1.add(new Point(2,2));
  for(int i=0; i   {
   System.out.println(a1.get(i));  //get方法获取元素
  }
  System.out.println(a1);         //调用toString方法
  
  Object[] obj = a1.toArray();     //返回一个包含元素的对象数组,Object类型
  for(int i=0; i   {
   System.out.println(obj[i]);
  }
  
  List l = array.asList(obj);    //从数组返回一个固定长度的链表
  System.out.println(l);
  l.add("wj");                   //错误,l的长度固定了
  
  Iterator it = a1.iterator();    //迭代器方便操作数组
  while(it.haaNext())             //hasNext判断有没有下一个元素
  {
   System.out.println(it.next());  //next返回下一个元素
  }
  
  Student st1 = new Student(0, "zs");
  Student st2 = new Student(1, "ls");
  Student st3 = new Student(2, "ww");
  a1.add(st1);
  a1.add(st2);
  a1.add(st3);
  Collections.sort(a1);  //自然排序
  Collections.sort(a1,new Student.StudentComparator());
  Collections.sort(a1,Collections.reverseOrder());  //反向排序
  printElements(a1);
 }
}

class Point
{
 int i,j;
 Point(int x, int y)
 {
  this.x = x;
  this.y = y;
 }
 
 public String toString()
 {
  return "x=:" + x + ";" + "y=:" + y;
 }
}
Collections类
排序:Collections.sort()   //对链表进行排序
(1)自然排寻(natural ordering );  //自然排序:2在3的前面,字母a在字母b的前面
(2)实现比较器(Comparator)接口。
取最大和最小的元素:Collections.max()、Collections.min()。
在已排序的List中搜索指定的元素:Collectons.binarySearch()

class Student impelments Comparable  //实现Comparable接口
{
 int num;
 String name;
 Student(int num, String name)
 {
  this.num = num;
  this.name = name;
 }
 
 static class StudentComparator imlements Comparator
 {
  public int compare(Object o1, Object o2)
  {
   Student s1 = (Student)o1;
   Student s2 = (Student)o2;
   int result = s1.num > s2.num ? 1 : (s1.num == s2.num ? 0 : -1);
   if(result == 0)
   {
    result = s1.name.compareTo(s2.name)   //学号相同,比较名字
   }
   return result;
  }
 }
 
 public int compareTo(Object o)    //覆盖compareTo方法
 {
  Student s = (Student)o;
  return num > s.num ? 1:(num == s.num ? 0: -1);
 }
 
 public String toString(Student s)
 {
  return "num =:" + num + "name=:" + name;
 }
}

相关文章
|
17天前
|
存储 缓存 安全
java 中操作字符串都有哪些类,它们之间有什么区别
Java中操作字符串的类主要有String、StringBuilder和StringBuffer。String是不可变的,每次操作都会生成新对象;StringBuilder和StringBuffer都是可变的,但StringBuilder是非线程安全的,而StringBuffer是线程安全的,因此性能略低。
39 8
|
1月前
|
存储 安全 Java
java.util的Collections类
Collections 类位于 java.util 包下,提供了许多有用的对象和方法,来简化java中集合的创建、处理和多线程管理。掌握此类将非常有助于提升开发效率和维护代码的简洁性,同时对于程序的稳定性和安全性有大有帮助。
51 17
|
27天前
|
Java
Java 8 引入的 Streams 功能强大,提供了一种简洁高效的处理数据集合的方式
Java 8 引入的 Streams 功能强大,提供了一种简洁高效的处理数据集合的方式。本文介绍了 Streams 的基本概念和使用方法,包括创建 Streams、中间操作和终端操作,并通过多个案例详细解析了过滤、映射、归并、排序、分组和并行处理等操作,帮助读者更好地理解和掌握这一重要特性。
27 2
|
1月前
|
存储 Java
判断一个元素是否在 Java 中的 Set 集合中
【10月更文挑战第30天】使用`contains()`方法可以方便快捷地判断一个元素是否在Java中的`Set`集合中,但对于自定义对象,需要注意重写`equals()`方法以确保正确的判断结果,同时根据具体的性能需求选择合适的`Set`实现类。
|
26天前
|
安全 Java
Java多线程集合类
本文介绍了Java中线程安全的问题及解决方案。通过示例代码展示了使用`CopyOnWriteArrayList`、`CopyOnWriteArraySet`和`ConcurrentHashMap`来解决多线程环境下集合操作的线程安全问题。这些类通过不同的机制确保了线程安全,提高了并发性能。
|
1月前
|
存储 Java 程序员
Java基础的灵魂——Object类方法详解(社招面试不踩坑)
本文介绍了Java中`Object`类的几个重要方法,包括`toString`、`equals`、`hashCode`、`finalize`、`clone`、`getClass`、`notify`和`wait`。这些方法是面试中的常考点,掌握它们有助于理解Java对象的行为和实现多线程编程。作者通过具体示例和应用场景,详细解析了每个方法的作用和重写技巧,帮助读者更好地应对面试和技术开发。
86 4
|
1月前
|
Java 编译器 开发者
Java异常处理的最佳实践,涵盖理解异常类体系、选择合适的异常类型、提供详细异常信息、合理使用try-catch和finally语句、使用try-with-resources、记录异常信息等方面
本文探讨了Java异常处理的最佳实践,涵盖理解异常类体系、选择合适的异常类型、提供详细异常信息、合理使用try-catch和finally语句、使用try-with-resources、记录异常信息等方面,帮助开发者提高代码质量和程序的健壮性。
49 2
|
1月前
|
存储 Java 开发者
在 Java 中,如何遍历一个 Set 集合?
【10月更文挑战第30天】开发者可以根据具体的需求和代码风格选择合适的遍历方式。增强for循环简洁直观,适用于大多数简单的遍历场景;迭代器则更加灵活,可在遍历过程中进行更多复杂的操作;而Lambda表达式和`forEach`方法则提供了一种更简洁的函数式编程风格的遍历方式。
|
1月前
|
Java 开发者
|
1月前
|
存储 安全 Java
如何保证 Java 类文件的安全性?
Java类文件的安全性可以通过多种方式保障,如使用数字签名验证类文件的完整性和来源,利用安全管理器和安全策略限制类文件的权限,以及通过加密技术保护类文件在传输过程中的安全。
42 4