`
piperzero
  • 浏览: 3466304 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

java在使用实现了List接口时候应该注意的问题

 
阅读更多

List 接口 继承自Collection接口 .. 元素顺序按照插入顺序与 ...有2中List 。

ArrayList 和LinkedList 他们都是变长数组,只是存储方式不同 。。ArrayList是以数组存储,适合元素的查找 、、

LinkedList是以链表为存储结构 适合高效率的插入删除 。

LinkedList 和ArrayList都实现了 List接口

实现了Iterable接口可以进行迭代for循环操作。。。不能通过迭代for循环的集合删除元素 。。。

我们在使用list的时候经常会需要返回List的一个子列表 。

我们知道在List接口中存在一个 subList方法可以返回 从 0到 List长度的索引之间的

元素的一个子视图 ..这个视图和原列表存在这关系映射.在子视图中增加或删除都会影响到原list ;

看下面一段代码 我们发现 我们先通过删除视图中的所有元素从而 删除list中包含的所有子列表的元素 结果为空。

我们有通过子列表视图添加元素 发现 原列表右增加了元素...使用时候应该注意

import java.util.ArrayList;
import java.util.List ;
class MyObject {
static int i=0 ;
@Override
public String toString() {
// TODO Auto-generated method stub
return this.getClass().getName();
}
}
public class MyArray {
private List<MyObject> l=new ArrayList<MyObject>() ;
public void add(MyObject ...obj ){
for(MyObject tem:obj){
l.add(tem) ;
}
}
public void show(){
System.out.println(this.l );
}
public static void main(String[]args){
MyArray arr=new MyArray() ;
MyObject ss[]={new MyObject(),new MyObject(),new MyObject(),new MyObject()} ;
arr.add(ss) ;
System.out.println("原始数据");
arr.show() ;
List<MyObject> ll=arr.getSub(0,4) ; //返回0-4之间的所有值的列表不包括 索引4
System.out.println("通过子视图删除所有元素");
ll.removeAll(ll); //通过子列表删除所有列表
arr.show() ;
System.out.println("通过子视图添加");
ll.add((MyObject) new MyObject()) ;
ll.add((MyObject) new MyObject()) ;
ll.add((MyObject) new MyObject()) ;
arr.show() ;
}
public List<MyObject> getSub(int i,int j) {
return l.subList(i, j);
}

}

分享到:
评论

相关推荐

    java 面试题 总结

    以下程序使用内部类实现线程,对j增减的时候没有考虑顺序问题。 public class ThreadTest1{ private int j; public static void main(String args[]){ ThreadTest1 tt=new ThreadTest1(); Inc inc=tt.new Inc(); ...

    实验05 Java集合.doc

    3)了解List接口及主要实现类(ArrayList、LinkedList、Vector) 4)了解Map接口及主要实现类(HashMap、TreeMap、HashTable) 二、实验内容及步骤 1、编写程序练习将以下5个Person类的对象放在一个HashSet中。 姓名...

    JAVA面试题最全集

    给定一个C语言函数,要求实现在java类中进行调用。 45.如何获得数组的长度? 46.访问修饰符“public/private/protected/缺省的修饰符”的使用 47.用关键字final修饰一个类或者方法时,有何意义? 48.掌握类和...

    java关键字ArrayList详解

    ArrayList是Java中的一种常见的数据结构,它实现了List接口,是线程不安全的动态数组。它的容量可以自动增长,因此可以方便地插入、删除和查找数据,是Java集合框架中广泛使用的一种结构。 ArrayList的优势在于灵活...

    疯狂JAVA讲义

    7.4.1 List接口和ListIterator接口 261 7.4.2 ArrayList和Vector实现类 264 7.4.3 固定长度的List 266 7.5 Queue接口 266 7.5.1 LinkedList实现类 266 7.5.2 PriorityQueue实现类 269 7.6 Map 270 7.6.1 ...

    Java股票分析排序

    现有股票数据XX条,无序...注意:实现排序算法可以使用冒泡排序,插入排序,堆排序,选择排序,快速排序等,任何的排序算法都是可以被接受的,但不能使用系统库中自带的排序函数,如List.sort() 或者 Arrays.sort()。

    Java开发详解.zip

    031302_【第13章:Java类集】_List接口笔记.pdf 031303_【第13章:Java类集】_LinkedList类笔记.pdf 031304_【第13章:Java类集】_Set接口笔记.pdf 031305_【第13章:Java类集】_排序及重复元素说明笔记.pdf 031306_...

    Java开发常见问题总结.docx

    一些关键且实用的Java开发技巧: 基础语法与规范: 始终使用public class并遵循驼峰命名法。 使用final关键字以提高性能和明确意图(不可变对象)。 明确初始化变量,避免...注意volatile关键字的使用,确保多线程

    Java 语言基础 —— 非常符合中国人习惯的Java基础教程手册

    (5) implements 子句用于说明类中将实现哪些接口,接口是 Java 的一种引用类 型。 (6) 类体包含了变量和方法。在类体中定义的数据、变量和方法称为类的成员, 或称为实例变量和实例方法。 (7) 例如: 下例定义...

    java初学者必看

    15.3.1 链表List接口方法 15.3.2 链表迭代器接口 15.3.3 链表和数组链表 15.3.4 链表应用 15.3.5 数组链表应用 15.4 集Set 15.4.1 排序集接口 15.4.2 哈希集和树集 15.4.3 树集应用 15.5 映射Map 15.5.1 ...

    JAVA中List与Set、Map的区别

    1、List,Set,map都是继承自Collection接口,...  3、List接口有三个实现类:LinkedList,ArrayList,Vector ,Set接口有两个实现类:HashSet(底层由HashMap实现),LinkedHashSet  Collection  /   /   / 

    Java进阶--深入理解ArrayList实现原理

    ArrayList就是动态数组,用MSDN中的说法,就是Array的复杂版本,它提供了动态的增加和减少元素,实现了Collection和List接口,可以灵活的设置数组的大小。要注意的是ArrayList并不是线程安全的,因此一般建议在单...

    Java常见面试题208道.docx

    面试题包括以下十九部分:Java 基础、容器、多线程、反射、对象拷贝、Java Web 模块、异常、网络、设计模式、Spring/Spring MVC、Spring Boot/Spring Cloud、Hibernate、Mybatis、RabbitMQ、Kafka、Zookeeper、MySql...

    超级有影响力霸气的Java面试题大全文档

    但通常情况下,由于Java Bean是被容器所创建(如Tomcat)的,所以Java Bean应具有一个无参的构造器,另外,通常Java Bean还要实现Serializable接口用于实现Bean的持久性。Java Bean实际上相当于微软COM模型中的本地...

    \java超强笔记(超级经典)

    &lt;E extends Numner&comparator&gt; 类名&接口,表示E继承Numner类实现comparator接口 &lt;?&gt; 泛型通配符表示任意类型,仅用于传参 类型&gt; 表示这个类型可以是该类或者该类的子类。 类型&gt; 表示这个类型可以是该...

    java面试题

    答:运行时异常时(JVM)java虚拟机在运行过程中发生的问题,比如:内存溢出等问题。这类异常没法要求程序员去一一捕获并抛出,一般异常是Java类库或程序员自己写的代码发生的错误,这类异常可以由我们去一一捕获并...

    基于链表节点实现二叉树节点(Java源码)

    * 基于链表节点实现二叉树节点 */ package dsa; public class BinTreeNode implements BinTreePosition { protected Object element;//该节点中存放的对象 protected BinTreePosition parent;//父亲 ...

    Java面试宝典2020修订版V1.0.1.doc

    使用时候还应注意什么? 14 6、short s1=1;s1=s1+1;有什么错?short s1 = 1;s1+=1 有什么错? 14 7、char为什么能存贮一个汉字? 15 9、final关键字的用法? 15 10、静态变量和实例变量的区别? 15 11、面向对象的...

    习----题-Java-Web程序设计教程-[共2页].pdf

    另外,在前面的比较接口中也可以使用泛型,例如例 3.3 的 MyCmp 类还可以这样来实现, 请看如下语句。 public class MyCmp implements Comparator&lt;Student&gt;{ public int compare(Student s1, Student s2){ …… } }...

Global site tag (gtag.js) - Google Analytics