`
Anddy
  • 浏览: 198082 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

List杂记

阅读更多
package holding;
//: holding/ListFeatures.java

import typeinfo.pets.*;
import java.util.*;
import static net.mindview.util.Print.*;

public class ListFeatures {
  public static void main(String[] args) {
    Random rand = new Random(47);
    // 下面arrayList()是对象pets中的 静态方法。。
    List<Pet> pets = Pets.arrayList(7);
    print("1: " + pets);
    Hamster h = new Hamster();
    pets.add(h); // Automatically resizes
    print("2: " + pets);
    print("3: " + pets.contains(h));
    pets.remove(h); // Remove by object
    Pet p = pets.get(2);
    print("4: " +  p + " " + pets.indexOf(p));
    
  //当确定一元素是否属于某个list发现某个元素的索引,以及从某个list中删除一个元素,containalls()	时,
  //都会用到equals()方法(这个equals 方法并没有重写,而是根类Object 类的一部分)
    
    Pet cymric = new Cymric();
    print("5: " + pets.indexOf(cymric));
    print("6: " + pets.remove(cymric));
    
    // Must be the exact object:
    print("7: " + pets.remove(p));
    print("8: " + pets);
    pets.add(3, new Mouse()); // Insert at an index
    print("9: " + pets);
    
   //仅仅重新建立一个sublist,sublist里保存的仅仅是pets集合中几个位置,,可以肯定绝对没有
    //保留对象的引用。为什么这样认为,在下面当你Collections.sort(pets,rand);然后print(sub),你会发现打印出来的
    //的对象不再是原来的那三个对象。
    
    
    //所创建的subList 的元素的还是公用原来List中的对象,
   //于是就有了两种修改LIst对象的办法。(或者说是两种路径)。 
    List<Pet> sub = pets.subList(1, 4);
    print("subList: " + sub);
    print("10: " + pets.containsAll(sub));
    Collections.sort(sub); // In-place sort
    print("sorted subList: " + sub);
    // Order is not important in containsAll():
    
    //
    print("11: " + pets.containsAll(sub));
    Collections.shuffle(sub, rand); // Mix it up
    print("shuffled subList: " + sub);
    print("12: " + pets.containsAll(sub));
    
    /*
     * Collections.shuffle(pets,rand);
     * print(sub);
     * 上面说明了方法subList(int index1,int index2)创建的子列表和母列表的关系。
     */
    
    
    /*  
     * pets.remove(2);
     *  print(sub);
     */
    //试着通过pets修改与sub共有 的对象----(删除了第三个对象),然后我通过print(sub)去查看第三个对象是否删除,
    //结果不尽人意,throws 一个runtimeException的异常:ConcurrentModificationException
    /*
     * ConcurrentModificationException的解释如下:
     * 当方法检测到对象的并发修改,但不允许这种修改时,抛出此异常。
     * 
     */
   
    //但是下面的处理为什么又不会出现异常?
    /* 
     * sub.remove(2);
     * print(pets);
     */
    List<Pet> copy = new ArrayList<Pet>(pets);
    sub = Arrays.asList(pets.get(1), pets.get(4));
    print("sub: " + sub);
    copy.retainAll(sub);
    print("13: " + copy);
    copy = new ArrayList<Pet>(pets); // Get a fresh copy
    copy.remove(2); // Remove by index
    print("14: " + copy);
    copy.removeAll(sub); // Only removes exact objects
    print("15: " + copy);
    copy.set(1, new Mouse()); // Replace an element
    print("16: " + copy);
    copy.addAll(2, sub); // Insert a list in the middle
    print("17: " + copy);
    print("18: " + pets.isEmpty());
    pets.clear(); // Remove all elements
    print("19: " + pets);
    print("20: " + pets.isEmpty());
    pets.addAll(Pets.arrayList(4));
    print("21: " + pets);
    Object[] o = pets.toArray();
    print("22: " + o[3]);
    //重载的toArray()的参数是与转换后的的数组类型相同的数组,该参数数组的大小任意,如果太小,存放不下LIst中的所有元素,
    //toArray()将创建一个具有适合大小的数组。正如下面所示:new pet[0]创建长度为0的数组。
    Pet[] pa = pets.toArray(new Pet[0]);
    print("23: " + pa[3].id());
  }
}
/* Output:
1: [Rat, Manx, Cymric, Mutt, Pug, Cymric, Pug]
2: [Rat, Manx, Cymric, Mutt, Pug, Cymric, Pug, Hamster]
3: true
4: Cymric 2
5: -1
6: false
7: true
8: [Rat, Manx, Mutt, Pug, Cymric, Pug]
9: [Rat, Manx, Mutt, Mouse, Pug, Cymric, Pug]
subList: [Manx, Mutt, Mouse]
10: true
sorted subList: [Manx, Mouse, Mutt]
11: true
shuffled subList: [Mouse, Manx, Mutt]
12: true
sub: [Mouse, Pug]
13: [Mouse, Pug]
14: [Rat, Mouse, Mutt, Pug, Cymric, Pug]
15: [Rat, Mutt, Cymric, Pug]
16: [Rat, Mouse, Cymric, Pug]
17: [Rat, Mouse, Mouse, Pug, Cymric, Pug]
18: false
19: []
20: true
21: [Manx, Cymric, Rat, EgyptianMau]
22: EgyptianMau
23: 14
*///:~

分享到:
评论
3 楼 Anddy 2008-12-14  
helyho 写道

不知道你发的代码啥意图.


呵呵,对学习的总结。。把自己对代码的理解写出来,
2 楼 helyho 2008-12-07  
不知道你发的代码啥意图.
1 楼 Anddy 2008-12-05  
spyker 写道

没看明白要做什么

什么地方没看懂,,,看我能否帮你。。

相关推荐

    list to list 将list内容移到另一个list

    在编程领域,特别是涉及到数据操作的时候,`list` 是一种常用的数据结构,它在Python、JavaScript等语言中广泛使用。`list to list` 操作通常指的是将一个列表(list)的内容移动到另一个列表中,这可能涉及到列表的...

    List转换为List

    本知识点重点讲解将List转换为List的过程,这在进行Web开发、数据处理以及与前端交互等场景中非常常见。同时,也会涉及List转换为List及list转换为JsonArray的内容。 ### List转换为List 在Java中,Bean通常指的是...

    list嵌套list例子

    在Python编程语言中,列表(list)是一种非常重要的数据结构,它可以存储任意类型的对象,包括数字、字符串,甚至是其他列表。当我们谈论“list嵌套list”时,这意味着在一个列表内部包含了一个或多个列表,这样的...

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

    Java中List对象的分页思想-按10个或者n个数对list进行分组 Java中List对象的分页思想是一种常用的数据处理技术,通过将一个大的List对象分割成多个小的List对象,每个小的List对象包含一定数量的元素,例如10个或n...

    C语言头文件 LIST C语言头文件 LIST

    C语言头文件 LISTC语言头文件 LISTC语言头文件 LISTC语言头文件 LISTC语言头文件 LISTC语言头文件 LISTC语言头文件 LISTC语言头文件 LISTC语言头文件 LISTC语言头文件 LISTC语言头文件 LISTC语言头文件 LISTC语言...

    Scala的List类方法整合

    ### Scala的List类方法整合 在Scala编程语言中,`List` 类是处理有序集合的一种常见方式。本文将详细介绍 `List` 类中的多种方法及其用途,帮助开发者更好地理解和使用这些功能。 #### 1. `def + (elem: A): List...

    C# List实现行转列的通用方案

    private static List&lt;dynamic&gt; DynamicLinq(List&lt;T&gt; list, List&lt;string&gt; DimensionList, string DynamicColumn, out List&lt;string&gt; AllDynamicColumn) where T : class { // ... } ``` 3. DynamicLinq方法的实现 ...

    delphi Tlist使用方法举例

    在Delphi编程环境中,`TList` 是一个基础且重要的数据结构,用于存储动态数组。在 Delphi 的 VCL(Visual Component Library)框架中,`TList` 类提供了方便的方法来管理和操作对象列表。本教程将通过一个DEMO示例,...

    C#List集合分组winform把List分组

    描述中提到的“**再做List数据集合打印或数据绑定时,需要把List集合分组筛选**”意味着在处理List数据并准备显示或输出时,可能需要根据某些条件对数据进行分类,然后可能进一步筛选出特定的子集。这可以通过Linq的...

    Alist安装包+快速启动-停止脚本

    Alist是一款强大的网盘挂载工具,它允许用户将云端的存储空间本地化,仿佛网盘变成了自己的硬盘,提供了一种高效便捷的方式来管理和操作网盘内的文件。标题中的"Alist安装包+快速启动-停止脚本"表明这个压缩包包含了...

    Java将2个List集合合并到一个List里面并排序工具类

    Java将2个List集合合并到一个List里面并排序工具类 1、Java编程资源,定义了一个名为`ListMerger`的工具类,主要包含一个名为`mergeAndSortLists`的静态方法。此方法用于将两个已经根据时间顺序排列的List合并成一...

    java 数组转list list转数组 list数组互转

    java 数组转list list转数组 list数组互转 java8 代码示例

    String[] list 相互转化

    ### String[] 与 List 相互转化 在 Java 编程语言中,`String[]` 数组和 `List` 集合之间的相互转换是非常常见的需求。这两种数据结构各有优势:数组提供了固定长度且访问效率高的特性,而列表则支持动态调整大小...

    SharedPreferences存取list集合

    要将List存储到SharedPreferences,我们需要序列化(serialize)List为字符串,然后在需要时反序列化(deserialize)回List。一种常见的序列化方法是JSON。JSON是一种轻量级的数据交换格式,易于人阅读和编写,同时...

    json转为list 涉及 java springboot

    "JSON 转换为 List 涉及 Java 和 Spring Boot" JSON 转换为 List 是一种常见的数据处理操作,特别是在 Java 和 Spring Boot 应用程序中。下面我们将详细介绍如何使用 Java 和 Spring Boot 将 JSON 字符串转换为 ...

    C语言头文件 LIST.H

    C语言头文件 LIST.HC语言头文件 LIST.HC语言头文件 LIST.HC语言头文件 LIST.HC语言头文件 LIST.HC语言头文件 LIST.HC语言头文件 LIST.HC语言头文件 LIST.HC语言头文件 LIST.HC语言头文件 LIST.HC语言头文件 LIST.HC...

    Docker中的Alist挂载qBittorrent实现离线下载

    在本文中,我们将深入探讨如何在Docker环境中利用Alist挂载qBittorrent来实现离线下载。首先,理解这个过程的关键在于Alist和qBittorrent的集成以及Docker容器之间的通信。 1. **配置Alist连接qBittorrent** - ...

    java 中如何从LIST 对象取值

    在Java编程语言中,列表(List)是一种常用的数据结构,用于存储有序的元素集合。本文将深入探讨如何从List对象中获取数据,包括使用不同类型的List实现以及从List中提取特定值的方法。我们将通过示例代码来理解这些...

    duilib list控件使用

    本篇文章将详细介绍如何在Duilib中使用List控件,并通过`list.cpp`文件的示例来探讨其主要功能和用法。 首先,理解List控件的基本结构。List控件由多个子项(Item)组成,每个子项可以包含文本、图片或者自定义的...

    浅谈C#中ListT对象的深度拷贝问题

    一、List对象中的T是值类型的情况(int 类型等) 对于值类型的List直接用以下方法就可以复制: List&lt;T&gt; oldList = new List(); oldList.Add(..); List&lt;T&gt; newList = new List(oldList); 二、List对象中的T是引用...

Global site tag (gtag.js) - Google Analytics