`
lzth
  • 浏览: 142336 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

java开发中的List的使用

    博客分类:
  • Java
阅读更多
Java容器类包含List、ArrayList、Vector及map、HashTable、HashMap
ArrayList和HashMap是异步的,Vector和HashTable是同步的,所以Vector和HashTable是线程安全的,而 ArrayList和HashMap并不是线程安全的。因为同步需要花费机器时间,所以Vector和HashTable的执行效率要低于 ArrayList和HashMap。
List是有序的Collection,使用此接口能够精确的控制每个元素插入的位置。用户能够使用索引(元素在List中的位置,类似于数组下标)来访问List中的元素,这类似于Java的数组。
和下面要提到的Set不同,List允许有相同的元素。
除了具有Collection接口必备的iterator()方法外,List还提供一个listIterator()方法,返回一个 ListIterator接口,和标准的Iterator接口相比,ListIterator多了一些add()之类的方法,允许添加,删除,设定元素, 还能向前或向后遍历。
实现List接口的常用类有LinkedList,ArrayList,Vector和Stack。
ArrayList类
ArrayList实现了可变大小的数组。它允许所有元素,包括null。ArrayList没有同步。
size,isEmpty,get,set方法运行时间为常数。但是add方法开销为分摊的常数,添加n个元素需要O(n)的时间。其他的方法运行时间为线性。
每个ArrayList实例都有一个容量(Capacity),即用于存储元素的数组的大小。这个容量可随着不断添加新元素而自动增加,但是增长算法 并没有定义。当需要插入大量元素时,在插入前可以调用ensureCapacity方法来增加ArrayList的容量以提高插入效率。
和LinkedList一样,ArrayList也是非同步的(unsynchronized)。

如果定义了一个List , 想要比较List里面的内容, 我们需要重写类中和hastcode方法和equals 方法 .
重写hascode方法是比较简单的,或者说是个模式性的东西 , 只需要在类中添加一个 public int hashCode()方法 ,并将类中的所有变量进行一个序列化即可.
如:
    public int hashCode()
    {
        return Name.hashCode()*11+method.hashCode()*7+start;
    }
注: 其中的变量Name 、method是String类型的变量, 而start则是int型. 这三个变量是这个类中定义的三个私的有变量.
重写 public int hashCode()方法也是一个固定的模式
如:
public boolean equals (Object obj)
    {
        if (this == obj)
            return true;
        if ((obj == null) || !(obj.getClass() == this.getClass()))
            return false;       
          Location other = (Location) obj;
          return this.Name.equals(other.className)
           && this.method.equals(other.methodName)
           && this.start==(other.startLine)      
    }
注:Location是这个类的名字, 把这个程序完整的放到一个类中可以表示为:
public class Location
{
     :
     private String Name = null;
     private String method = null;
     private int start = -1;
     :
     :
     public List getMeaasge()
     {
          List message = new ArrayList();
          :
          :
         
          //判断加到list的内容是否有与Location同名的对外对象, 如果想等则要加入
         if(!message .contains(methLoca))
   // 如果不在程序重写hascode方法和equal方法则这个判断是无效的
            message .add(methLoca);

         return message
      }


    public int hashCode()
    {
        return Name.hashCode()*11+method.hashCode()*7+start;
    }

     public boolean equals (Object obj)
    {
        if (this == obj)
            return true;
        if ((obj == null) || !(obj.getClass() == this.getClass()))
            return false;       
          Location other = (Location) obj;
          return this.Name.equals(other.className)
           && this.method.equals(other.methodName)
           && this.start==(other.startLine)      
    }
}
分享到:
评论

相关推荐

    java获取list中两元素时间差

    Java 获取 List 中两元素时间差 Java 中获取 List 中两元素时间差是指在 List 集合中计算每个元素之间的时间差异。下面是相关知识点的详细解释: List 数据结构 List 是一种常见的数据结构,在 Java 中有多种实现...

    java 中如何从LIST 对象取值

    本文将深入探讨如何从List对象中获取数据,包括使用不同类型的List实现以及从List中提取特定值的方法。我们将通过示例代码来理解这些概念,同时也会涉及到与List相关的常见操作。 ### 一、List的基本概念 在Java中...

    关于Java中List对象的分页思想-按10个或者n个数对list进行分组

    在Java中, List对象的分页思想可以通过使用subList()方法来实现。subList()方法可以将一个大的List对象分割成多个小的List对象,每个小的List对象包含一定数量的元素。例如,以下代码将一个大的List对象分割成多个...

    java开发List提高效率

    提高 List 转换效率是 Java 开发中非常重要的一方面,本文将讨论如何将 List 转换为逗号分隔的字符串,并提高开发效率。 首先,为什么需要将 List 转换为逗号分隔的字符串?因为在实际开发中,我们经常需要将数据...

    java开发手册 api文档(jdk1.8中文)

    《Java开发手册API文档(JDK1.8中文版)》是Java开发者的重要参考资料,它详细阐述了JDK1.8版本中的各种类库、接口、方法和异常等核心概念,帮助开发者理解和运用Java编程语言进行后端开发。文档内容涵盖广泛,包括...

    java开发实战经典

    4. **集合框架**:Java集合框架包括List、Set、Queue等接口和ArrayList、LinkedList、HashSet、HashMap等实现类,书中的案例会演示它们的使用方法和场景。 5. **IO流**:理解输入输出流的概念,学习File类、字节流...

    JNI开发Java和C/C++互相传递List集合

    JNI开发Java和C/C++互相传递List集合, 可以参考: Java从C/C++获取List集合对象:https://blog.csdn.net/niuba123456/article/details/80994166 Java传递List集合对象到C/C++ ...

    6种方法初始化JAVA中的list集合

    在Java编程中,List集合是开发人员经常使用的一种数据结构,用于存储有序的元素列表。本文将详细介绍6种初始化Java List集合的方法,并通过代码示例帮助理解每种方法的使用和特点。 1. 常规方式 这是最常见的初始化...

    java开发流程

    - **集合框架**: List、Set、Map等常用集合类的使用。 ##### 2. JSP与Servlet - **JSP**: Java Server Pages,一种混合HTML与Java代码的技术,用于动态网页开发。 - **Servlet**: Java Web应用程序的核心技术之一...

    java反射,获取所有属性、方法以及List集合类

    然而,你可以通过类型检查和转换来操作List中的元素。 5. 访问私有成员: 对于私有字段和方法,可以使用`setAccessible(true)`来绕过访问限制。这需要谨慎使用,因为可能破坏封装性。 ```java field....

    java工具类 java开发助手 java util

    Java工具类(Java Util)是Java开发中不可或缺的一部分,它为开发者提供了大量便捷的功能,极大地提高了开发效率。在Java标准库中,`java.util`包是核心工具类库,包含了各种容器类、集合框架、日期时间处理、随机数...

    java的list取之方法

    List是Java中最常用的集合类型之一,理解并熟练掌握它的使用方法对于日常开发来说至关重要。通过上面的学习,我们可以看到List提供了丰富的API来帮助我们处理数据。无论是简单的元素增删改查还是更复杂的排序和过滤...

    Java开发手册 免费

    集合处理部分主要讲述了在Java集合框架(如List、Set、Map)的使用过程中应该注意的规范,比如在使用集合类时,需要指定集合的泛型,以减少类型转换的错误。 并发处理部分给出了多线程编程的规范和建议,比如合理...

    Java最新开发手册(黄山版)

    这本书涵盖了Java语言的核心概念、语法、设计模式以及开发工具的使用,对于想要深入理解和提升Java编程技能的开发者来说,是一份宝贵的资源。 一、Java语言基础 1. 类与对象:讲解Java面向对象编程的基础,包括类的...

    java中,list集合数据导出到excel表格通用工具类

    在Java编程中,将List集合数据导出到Excel表格是一个常见的需求,特别是在数据分析、报表生成或数据导出等场景。本实例提供了一个通用工具类,能够处理多种不同类型的对象集合,实现了最大化的通用性,使得开发者...

    java 使用Collections类对List的排序操作

    在实际开发中,我们还可以使用 Java 8 的流(Stream)API 对 `List` 进行排序,这种方式更加简洁和灵活。 ```java List<Integer> numbers = new ArrayList(Arrays.asList(1, 3, 2, 4)); numbers = numbers.stream()...

    Java开发资源库

    Java开发资源库是一个全面的学习平台,专为Java初学者和有经验的开发者提供从入门到精通的全方位指导。这个资源库包含了大量的实例和项目,帮助用户深入理解和实践Java编程语言的核心概念和技术。以下是对资源库中...

    Java开发实战1200例(第1卷)

    《Java开发实战1200例(第1卷)》是一部深入浅出的Java编程教程,旨在通过大量的实例,帮助读者掌握Java编程的核心技术和实践应用。本书覆盖了Java语言的基础到高级特性,包括面向对象编程、类库使用、异常处理、多...

    java XML转成LIST可以转成指定的类数组

    在Java编程中,XML...通过以上步骤,我们可以方便地在Java中实现XML到指定类型List的转换,同时支持多层数据结构的处理。在实际开发中,根据具体需求调整模型类和转换方法,可以灵活应对各种XML数据结构的处理。

    java开发实战经典习题答案

    Java开发实战经典课后习题答案涉及到Java编程语言的多个基础知识点,这些知识点对于初学者和想要巩固基础的开发者都具有参考价值。以下是对文档中提到的内容的知识点梳理: 1. Java简介 - Java源程序文件的后缀是....

Global site tag (gtag.js) - Google Analytics