Java集合使用
来源:互联网 发布:淘宝开店要注册商标吗 编辑:程序博客网 时间:2024/06/13 23:34
以前一直觉得自己集合使用的很溜,看一下api及其实现才发现原来自己很多东西都不会,或者很多东西都想当然了,看来还是做一下笔记,再重新温故一下。
集合主要分为两大类,Collection和Map,Collection的主要子类有Set,List。List的主要子类有Vector,ArrayList,LinkedList。Map的主要子类有HashMap,TreeMap,LinkedHashMap,HaspTable。其中平常普通开发中使用最多的应该是ArrayList ,Vector,HashMap,HashTable;现在说说他们的区别:
1、ArratList:是有序的,其实现就是封装了一个数组,因为其方法和属性都没加同步锁sychronized,所以不适合并发环境,是线程不安全的;适合做查询操作。
2、Vector:跟ArrayList一样是有序的,底层实现就是分装了一个数组;但是它的方法加了同步锁sychronized,所以是线程安全的;但是性能比ArratList低
3、HashMap:存储键值对,并且是无序的;方法没加同步锁,是线程不安全的。
4、HashTable:存储键值对,并且是无序;;方法加了同步锁,是线程安全的,但是效率低些。
上面只是一些基础的东西,相信很多人都会下面来看一些实例:
1、ArrayList的使用:
(1)首先说说ArrayList的添加方法add
add(Object obj)——往集合最后面一个元素后面添加,下面是ArrayList中的实现
public boolean add(Object obj) { ensureCapacity(size + 1); elementData[size++] = obj; return true; }add(int i, Object obj)——将指定元素插入此列表中的指定位置,向右移动当前位于该位置的元素(如果有)以及所有后续元素(将其索引加 1),其实现:
public void add(int i, Object obj) { if(i > size || i < 0) { throw new IndexOutOfBoundsException((new StringBuilder()).append("Index: ").append(i).append(", Size: ").append(size).toString()); } else { ensureCapacity(size + 1); System.arraycopy(((Object) (elementData)), i, ((Object) (elementData)), i + 1, size - i); elementData[i] = obj; size++; return; } }set(int i, Object obj)——用指定的元素替代此列表中指定位置上的元素,其实现:
public Object set(int i, Object obj) { RangeCheck(i); Object obj1 = elementData[i]; elementData[i] = obj; return obj1; }remove(int i)——移除此列表中指定位置上的元素。向左移动所有后续元素(将其索引减 1),实现:
public Object remove(int i) { RangeCheck(i); modCount++; Object obj = elementData[i]; int j = size - i - 1; if(j > 0) System.arraycopy(((Object) (elementData)), i + 1, ((Object) (elementData)), i, j); elementData[--size] = null; return obj; }remove(Object obj)——移除此列表中首次出现的指定元素(如果存在)。如果列表不包含此元素,则列表不做改动,其内部实现:
public boolean remove(Object obj) { if(obj == null) { for(int i = 0; i < size; i++) if(elementData[i] == null) { fastRemove(i); return true; } } else { for(int j = 0; j < size; j++) if(obj.equals(elementData[j])) { fastRemove(j); return true; } } return false; } private void fastRemove(int i) { modCount++; int j = size - i - 1; if(j > 0) System.arraycopy(((Object) (elementData)), i + 1, ((Object) (elementData)), i, j); elementData[--size] = null; }addAll(Collection collection)——按照指定 collection 的迭代器所返回的元素顺序,将该 collection 中的所有元素添加到此列表的尾部,内部实现:
public boolean addAll(Collection collection) { Object aobj[] = collection.toArray(); int i = aobj.length; ensureCapacity(size + i); System.arraycopy(((Object) (aobj)), 0, ((Object) (elementData)), size, i); size += i; return i != 0; }
示例:
ublic class TestList {public static void main(String[] args) {//顺序结构ArrayList的使用,ArrayList是有序的,类似数组List<String> list=new ArrayList<String>();list.add("11");list.add("22");list.add("33");list.add("44");list.add("55");//将指定的元素添加到此列表的尾部。for (int i = 0; i < list.size(); i++) {System.out.println(list.get(i));}System.out.println("------------------------------------------------");//ArrayList的实现就是数组Object[] arrays=(Object[])list.toArray();for (int i = 0; i < arrays.length; i++) {System.out.println(arrays[i]);}System.out.println("-------------------------------------------------");String str1=list.set(1, "二货");//ArrayList改变某个索引下的值是,返回原来的值System.out.println(str1);System.out.println("-----------------------------------------------");for (int i = 0; i < list.size(); i++) {System.out.println(list.get(i));}System.out.println("--------------------------------------");list.set(1, str1);//用指定的元素替代此列表中指定位置上的元素list.add(0, "00");//将指定元素插入此列表中的指定位置,向右移动当前位于该位置的元素(如果有)以及所有后续元素(将其索引加 1)for (int i = 0; i < list.size(); i++) {System.out.println(list.get(i));}System.out.println("-----------------------------------");list.remove(0);for (int i = 0; i < list.size(); i++) {System.out.println(list.get(i));}System.out.println("------------------------------------");list.remove("55");//移除此列表中首次出现的指定元素(如果存在)。如果列表不包含此元素,则列表不做改动for (int i = 0; i < list.size(); i++) {System.out.println(list.get(i));}System.out.println("-------------------------------");List<String> list2=new ArrayList<String>();list2.add("66");list2.add("77");list2.add("88");list.addAll(list2);//照指定 collection 的迭代器所返回的元素顺序,将该 collection 中的所有元素添加到此列表的尾部for (int i = 0; i < list.size(); i++) {System.out.println(list.get(i));}System.out.println("是否包含“33”:"+list.contains("33"));System.out.println("元素\"66\"的索引:"+list.indexOf("66"));list.clear();System.out.println(list.size());}}
2、Map的使用,Map的常用遍历方式:
public class TestMap {public static void main(String[] args) {Map<String,Object> map=new HashMap<String, Object>();map.put("1", "zhangsan");map.put("2", "lisi");map.put("3", "wangwu");map.put("4", "zhaoliu");map.put("5", "tianqi");//map的遍历方法1for(String key:map.keySet()){String value=(String)map.get(key);System.out.println("key:"+key+"----"+"value:"+value);}System.out.println("--------------------------------------");//map的遍历方法2Iterator ita=map.entrySet().iterator();while(ita.hasNext()){Entry<String, Object> entry=(Entry<String, Object>)ita.next();System.out.println("key:"+entry.getKey()+"----"+"value:"+entry.getValue());}System.out.println("--------------------------------------");//Map的值遍历map.values();for(Object objValue:map.values()){System.out.println("values:"+objValue);}}}
0 0
- Java集合框架使用
- 使用 Java 集合框架
- java 集合的使用
- Java常用集合使用
- java中的集合使用
- Java 集合的使用
- Java集合使用
- JAVA 集合的使用
- JAVA集合使用总结
- JAVA集合Set使用
- Java集合使用详解
- Java集合之map 集合使用
- java中的集合的使用
- Java集合框架使用总结
- java集合类的使用
- Java集合框架使用总结
- Java集合框架使用注意事项
- JAVA中的集合类使用
- 单双列集合
- 双击退出程序
- 【Python】 天气查询
- 系统签名 sharedUserId android.uid.system
- android.graphics.drawable.Drawable注释翻译
- Java集合使用
- Insertion Sort List
- UITextField
- MVC框架与三层架构
- hdu5365
- 单双列集合
- CURL不使用文件存取COOKIE
- JavaScript解析Json实现动态修改多级下拉选择列表控件Select
- UIImageView和UIImage