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

正确删除List中的整数值

    博客分类:
  • Java
阅读更多

List为移除数据提供了两个remove的方法:
1. 按照下标索引删除
2. 按照值删除,删除第一个符合的值对象。

public interface List<E> extends Collection<E> {
    //省略其它方法,只保留remove方法
    /**
     * Removes the first occurrence of the specified element from this list,
     * if it is present (optional operation).  If this list does not contain
     * the element, it is unchanged.  More formally, removes the element with
     * the lowest index <tt>i</tt> such that
     * <tt>(o==null&nbsp;?&nbsp;get(i)==null&nbsp;:&nbsp;o.equals(get(i)))</tt>
     * (if such an element exists).  Returns <tt>true</tt> if this list
     * contained the specified element (or equivalently, if this list changed
     * as a result of the call).
     *
     * @param o element to be removed from this list, if present
     * @return <tt>true</tt> if this list contained the specified element
     * @throws ClassCastException if the type of the specified element
     *         is incompatible with this list (optional)
     * @throws NullPointerException if the specified element is null and this
     *         list does not permit null elements (optional)
     * @throws UnsupportedOperationException if the <tt>remove</tt> operation
     *         is not supported by this list
     */
    boolean remove(Object o);

    /**
     * Removes the element at the specified position in this list (optional
     * operation).  Shifts any subsequent elements to the left (subtracts one
     * from their indices).  Returns the element that was removed from the
     * list.
     *
     * @param index the index of the element to be removed
     * @return the element previously at the specified position
     * @throws UnsupportedOperationException if the <tt>remove</tt> operation
     *         is not supported by this list
     * @throws IndexOutOfBoundsException if the index is out of range
     *         (<tt>index &lt; 0 || index &gt;= size()</tt>)
     */
    E remove(int index);

}


当一个List存储的是整形数据的时候,需要注意下,以保证是按值删除数据或者按照下标索引删除数据。

public class Test {

	public static void main(String[] args) {

		List<Integer> list = new ArrayList<Integer>();
		list.add(1);
		list.add(3);
		list.add(20);
		list.add(6);
		list.add(5);
		list.add(1);
		
		/**
		 * 打印List中的值 --> [1, 3, 20, 6, 5, 1]
		 */
		System.out.println(list);
		
		/**
		 * 移动index =1,也就是第二个整数,移除的是3,而不是1。
		 * 输出List中的值得-->[1, 20, 6, 5, 1]
		 */
		list.remove(1);
		System.out.println(list);
		
		/**
		 * 移动第一个值为1的整数。
		 * 输出List中的值得-->[20, 6, 5, 1]
		 */
		list.remove(Integer.valueOf(1));
		System.out.println(list);
	}

}


删除整数可以用Integer.valueOf(value)或者 new Integer(value).

最好还是用Integer.valueOf(value), 因为Integer把-128~127的整数放入了cache,cache中取得的值不需要创建新的对象。

public final class Integer extends Number implements Comparable<Integer> {
   //其它变量和方法省略

	static final Integer cache[] = new Integer[-(-128) + 127 + 1];

	static {
	    for(int i = 0; i < cache.length; i++)
		cache[i] = new Integer(i - 128);
	}
    /**
     * Returns a <tt>Integer</tt> instance representing the specified
     * <tt>int</tt> value.
     * If a new <tt>Integer</tt> instance is not required, this method
     * should generally be used in preference to the constructor
     * {@link #Integer(int)}, as this method is likely to yield
     * significantly better space and time performance by caching
     * frequently requested values.
     *
     * @param  i an <code>int</code> value.
     * @return a <tt>Integer</tt> instance representing <tt>i</tt>.
     * @since  1.5
     */
    public static Integer valueOf(int i) {
	final int offset = 128;
	if (i >= -128 && i <= 127) { // must cache 
	    return IntegerCache.cache[i + offset];
	}
        return new Integer(i);
    }
}
分享到:
评论

相关推荐

    C实现删除链表中指定结点

    这段代码首先定义了链表的结构体`Node`,以及`ElemType`类型为`int`,这意味着链表将用于存储整数值。接下来,代码提供了两个关键函数:`newlist()`用于创建一个新的链表,而`dellist()`则实现了删除链表中指定结点...

    测量程序编制 - python 26数据类型:List(列表)-删除.pptx

    在Python编程语言中,列表(List)是一种常用的数据结构,用于存储有序的元素集合,它可以包含不同类型的元素,如整数、浮点数、字符串甚至其他列表。在处理列表时,有时我们需要根据不同的需求来删除其中的元素。...

    skiplist跳表C++实现

    接着,删除所有的偶数,再次查找这些偶数以验证它们已被正确删除。 总的来说,C++实现的跳表结合了概率和分层的思想,能够在保持较低的平均时间复杂度的同时,提供良好的性能表现。通过精心设计的测试程序,我们...

    C#中List集合与字典Dictionary的理解和运用

    例如,可以创建一个程序,让用户输入一系列数字并存储到`List&lt;int&gt;`中,然后计算它们的平均值;或者创建一个字典,用于存储书籍信息(书名作为键,出版年份作为值),并实现查找特定书籍的年份功能。 总之,理解并...

    c# 中的arrlist queue HashtableTest SortedList stack 集合

    在上述代码中,我们创建了一个`ArrayList`实例`arrlist`,并使用`Add`方法向列表中添加了多个元素,包括字符串和整数。通过`Remove`和`RemoveAt`方法,我们可以删除指定元素或索引处的元素,而`Insert`方法允许在...

    线性链表的插入与删除

    程序中提供了两个主要函数:`CreatList_L`用于创建链表,`ListInsert_L`和`ListDelete_L`分别用于在链表中插入和删除元素。 `CreatList_L`函数接受一个指针`L`和一个整数`n`作为参数,用于创建一个包含`n`个元素的...

    数据结构实验二.doc

    在链表中删除重复的结点,需要遍历链表,一旦发现重复的值,就删除该节点,确保最终链表中的所有节点值都是唯一的。 删除所有数据值为偶数的节点,需要检查每个节点的值,如果值为偶数,则将其从链表中移除。 将...

    设置ListCtrl背景色

    `COLORREF` 是Windows API中表示颜色的类型,它是一个无符号32位整数,其中低24位表示RGB值。 2. `SetAllItemColor(DWORD iItem, COLORREF TextColor, COLORREF TextBkColor)`:这个函数与 `SetItemColor` 类似,但...

    list_str_mul.rar_list_str_mul

    5. 最后,遍历链表,将链表中的每个节点值转换为字符串并连接起来,打印出完整的乘积。 这个实现可能不是最高效的,但其优点在于易于理解和实现,特别适合教学和学习目的。对于实际应用,如果需要处理大量大整数...

    MFC 列表控件添加修改删除实例

    可以传入字符串和整数值作为参数,分别对应列表项的文本和图像索引。例如: ```cpp int index = m_listCtrl.InsertItem(LVIF_TEXT, 0, _T("新项")); m_listCtrl.SetItemText(index, 1, _T("附加信息")); ``` 2. **...

    实现链表的常用操作(包括:创建、插入、删除以及查询)[借鉴].pdf

    `deleteElem`函数负责删除链表中所有值等于`elem`的节点。它从头节点开始遍历,当遇到匹配的元素时,删除该节点并更新指针。`flag`变量用于记录删除的节点数量,当遍历到链表末尾且仍有匹配元素时,会删除最后一个...

    C#集合遍历时删除和增加元素的方法

    初始化一个`LinkedList&lt;int&gt;`,并将0到29的整数添加到链表中。 ```csharp LinkedList&lt;int&gt; list = new LinkedList(); for (int i = 0; i ; i++) { list.AddLast(i); } ``` 2. **遍历并修改链表**: 当遍历链表...

    顺序表实现大整数加减JAVA

    在这个场景中,顺序表(Sequential List)是一种简单但有效的实现方式。 顺序表是一种线性数据结构,它将元素存储在连续的内存位置中,可以通过索引来访问和操作这些元素。在Java中,一个基本的顺序表可以由数组...

    数据结构实验一线性表的顺序存储结构.doc

    5. 查找和定位:根据用户提供的值,程序查找线性表中是否存在该值,并返回其位置。如果不存在,则返回0。 6. 主函数与算法调试:编写一个主函数来调用上述操作,并进行算法的调试,确保所有操作都能正确执行。 ...

    C#笔试题_经典50题

    13. 关于Hashtable,正确的说法是Remove()方法将删除Hashtable中的键值对。 在C#中,Hashtable提供了Remove()方法来删除键值对。 14. 关于struct和class,正确的说法是struct是值类型,而class是引用类型。 在C#...

    软基上机报告链表(拓展题).pdf

    链表的每个节点包含一个整数值和指向下一个节点的指针。链表的头节点指向第一个非零元素,尾节点的指针为NULL。 2. 查询与删除: 输入任意整数,检查链表中是否存在该数。如果存在,删除该节点,并输出删除前后的...

    双向链表插入删除基本操作演示.ppt

    首先,`ListInsert_Dul`接受三个参数:一个指向双向链表的引用`L`,一个整数`i`表示要插入的位置,以及要插入的新结点的值`e`。函数的目标是在链表的第`i`个位置插入新结点。 1. `if(!(p=GetElem_DuL(L,i))) ...

    c++异质链表(增、删、查)

    // 实现删除整数节点的逻辑 } bool search(int target) override { // 实现查找整数的逻辑 } void print() const override { std::cout ; } private: int value; }; ``` 对于字符串节点,可以创建类似...

    CList.rar_CList_CList mfc_add_cli_list control

    这个“CList.rar_CList_CList mfc_add_cli_list control”压缩包显然包含了与CList类相关的资料,特别是关于在MFC环境中如何添加、删除和查找元素的操作。 CList是MFC提供的一个双向链表模板类,它允许程序员存储和...

Global site tag (gtag.js) - Google Analytics