java集合类的clear()方法,能立刻把我集合占用的内存给清掉吗
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java集合类的clear()方法,能立刻把我集合占用的内存给清掉吗相关的知识,希望对你有一定的参考价值。
List l = new ArrayList();
l.clear(); 能立刻把我集合占用的内存清理吗
public void clear()
modCount++;
Entry[] tab = table;
for (int i = 0; i < tab.length; i++)
tab[i] = null;
size = 0;
里面也是个赋null操作
一执行clear()方法,会立刻把内存释放掉吗?gc 不立刻回收的话,clear()不就没作用了吗?
集合框架,
集合:
数组对映射类的数组无能为力要用map,数组的长度是固定的。
集合类的主要方法:
。添加、删除操作,例如add、addAll、remove、removeAll等
。查询操作,例如size、isEmpty、contains、iterator等。集合操作,例如containsAll、addAll、clear、
removeAll、retainAll等等
。转型操作,例如toArray
LinkedList类用于创建链表数据结构对象。它继承AbstractSequentialList类并实现了List、Queue接口。
跟ArrayList一样,LinkedList也是实现了List接口,这说明可以根据索引来查询集合内的元素。不过,LinkedList和ArrayList的区别也很明显,由于
LinkedList是实现了双向循环链表,所以元素可以很快捷的被插入或删除,但是,由于链表的特性,如果对LinkedList做查询,那么效率也非常低。
相对与ArrayList来说,基于链表对增加、删除元素的便捷性,LinkedList提供了addFirst、addLast、removeFirst、 removeLast等方法。
话不多说简单的操作代码展示
创建测试类Array
package cn.hp.test11; public class Array { public static void main(String[] args) { int[]array=new int[6]; array[0]=1; array[1]=2; array[2]=3; array[3]=4; array[4]=5; array[5]=6; // array[6]=7;//运行时会异常 for (int i=0;i<array.length;i++){ System.out.println(i); } } } 创建SetDemo测试类
package cn.hp.test11; import java.util.HashSet; import java.util.Iterator; import java.util.Set; public class SetDemo { public static void main(String[] args) { Set s= new HashSet(); s.add("想念"); s.add("恨"); s.add("爱"); s.add("怨"); System.out.println(s.isEmpty()); //是否空值 //移除 s.remove("爱"); //输出 Iterator it= s.iterator(); while (it.hasNext()){ System.out.println(it.next()); // s.clear();//清空 } } }
创建ListDemo测试类:
package cn.hp.test11; import java.util.ArrayList; import java.util.Iterator; import java.util.List; public class ListDemo { public static void main(String[] args) { List list = new ArrayList(); list.add("我想你"); list.add("我恨你"); list.add("我爱你"); list.add("我怨你"); list.add(list);//将list集合里的元素全部再添加一遍 //下标 // list.remove(2);//移除 // System.out.println(list.get(2));//下标输出 System.out.println(list.size()); System.out.println(list.contains(list)); //迭代 Iterator it = list.iterator(); while (it.hasNext()){ System.out.println(it.next()); } // list.clear();//清空 } } 创建LinkedListDemo:
package cn.hp.test11; import java.util.Iterator; import java.util.LinkedList; public class LinkedListDemo { public static void main(String[] args) { LinkedList ll =new LinkedList(); ll.add("我想你"); ll.add("我恨你"); ll.add("我爱你"); ll.add("我怨你"); ll.add("我打你"); ll.addFirst("我打你"); ll.addLast("我curry你"); ll.remove(); Iterator it1 = ll.iterator(); while (it1.hasNext()){ System.out.println(it1.next()); } } } 创建MapDemo测试类:
package cn.hp.test11; import java.util.*; public class MapDemo { public static void main(String[] args) { Map map= new HashMap(); map.put("1","我爱你"); map.put("2","我恨你"); map.put("3","我打你"); map.put("4","我curry你"); map.put("5","我想你"); System.out.println(map.get("2")); Set s = map.keySet();//set是collection的子类所以迭代是Iterator it= c.iterator(); Collection c= map.values(); Set s1= map.entrySet();//键值对输出 1=我爱你···· Iterator it= s1.iterator(); while (it.hasNext()){ System.out.println(it.next()); } } }
以上是关于java集合类的clear()方法,能立刻把我集合占用的内存给清掉吗的主要内容,如果未能解决你的问题,请参考以下文章