Java 集合常见问题
来源:互联网 发布:苹果6s数据连接快捷键 编辑:程序博客网 时间:2024/06/06 05:44
1.数组转ArrayList
List<String> list = Arrays.asList(arr);Arrays.asList会返回一个ArrayList对象,但是该类是Arrays类中一个私有静态内部类,具有set get contains等方法,不具有add remove方法(size固定)
应采用如下方法
ArrayList<String>list = new ArrayList<String>(Arrays.asList(arr));更加高效的方法:
ArrayList<String> arrayList = new ArrayList<String>(arr.length);Collections.addAll(arrayList, arr);
2.数组是否包含特定值
高效代码:
for(String s: arr){ if(s.equals(targetValue)) return true;}return false;3.在迭代中移除List中元素
不能采用索引方式(list.remove(i))移除元素,因为size大小会变,解决方法使用迭代器(iterator),代码如下:
ArrayList<String> list = new ArrayList<String>(Arrays.asList("a", "b", "c","d"));Iterator<String> iter = list.iterator();while (iter.hasNext()) { String s = iter.next(); if (s.equals("a")) { iter.remove(); }}next方法必须在remove方法前调用,否则会报ConcurrentModificationException 异常。
4.Hashtable 与 HashMap(哈希表)
a) Hashtable 是 JDK 1 遗留下来的类,而 HashMap 是后来增加的。
b)Hashtable 是同步的,比较慢,但 HashMap 没有同步策略,所以会更快。
c)Hashtable 不允许有个空的 key,但是 HashMap 允许出现一个 null key。
5. ArrayList 与 LinkedList
ArrayList 适用于多次随机访问操作,内部实现机制来讲ArrayList是使用Object的数组形式来存储的。
LinkedList (双向链表)适用于场景中有很多add、remove操作,只用少量的随机访问操作
6. Java中数组List数据结构
7.Map遍历
// System.out.println("第二种:通过Map.entrySet使用iterator遍历key和value:"); Iterator<Map.Entry<Integer, String>> it = map.entrySet().iterator(); while (it.hasNext()) { Map.Entry<Integer, String> entry = it.next(); System.out.println("key= " + entry.getKey() + " and value= " + entry.getValue()); } // 推荐,尤其是容量大时 System.out.println("第三种:通过Map.entrySet遍历key和value"); for (Map.Entry<Integer, String> entry : map.entrySet()) { //Map.entry<Integer,String> 映射项(键-值对) 有几个方法:用上面的名字entry //entry.getKey() ;entry.getValue(); entry.setValue(); //map.entrySet() 返回此映射中包含的映射关系的 Set视图。 System.out.println("key= " + entry.getKey() + " and value= " + entry.getValue()); }
Collection
- 是一个泛型的接口
- 继承了超级接口Iterable
- 每个Collection的对象包含了一组对象
- 所有的实现类都有两个构造方法,一个是无参构造方法,第二个是用另外一个Collection对象作为构造方法的参数
- 遍历Collection使用Iterator迭代器实现
- retainAll(collection),AddAll(),removeAll(c)分别对应了集合的交并差运算
- 没有具体的直接实现,但提供了更具体的子接口,如Set、List等
List
- 是一个接口,继承了接口Collection
- List是有序的Collection,能够精确控制插入、获取的位置
- 和Set接口的最大区别是,List允许重复值,Set不能
- 它的直接实现类有ArrayList,LinkedList,Vector等
- List有自己的迭代器ListIterator,可以通过这个迭代器进行逆序的迭代,以及用迭代器设置元素的值
ArrayList
- ArrayList实现了Collection接口
- ArrayList是一个顺序表。大小可变。
- ArrayList相比LinkedList在查找和修改元素上比较快,但是在添加和删除上比LinkedList慢
- ArrayList相比Vector是线程不安全的
LinkedList
- LinkedList泛型接口
- 链表
- 由于实现了Deque接口,所以它还是一个双端队列
阅读全文
0 0
- java集合常见问题
- Java 集合常见问题
- 个人Java常见问题集合
- Java集合-----java集合框架常见问题
- JAVA -- JAVA基础笔试、面试常见问题集合
- JAVA基础笔试、面试常见问题集合
- JAVA基础笔试、面试常见问题集合
- Java集合类常见问题(上)
- Java集合类常见问题(下)
- 集合常见问题
- 常见问题集合
- Java程序基础测试 基础笔试、面试常见问题集合
- asp.net 常见问题集合
- 数据库常见问题集合
- vs2003常见问题集合
- web标准常见问题集合
- web标准常见问题集合
- ArcGIS Server常见问题集合
- 模式分类学习笔记——绪论
- JVM系列二:GC策略&内存申请、对象衰老
- java基础(五):for循环和一维数组
- Maven 查询jar包地址
- UVA699TheFallingLeaves
- Java 集合常见问题
- JVM系列三:JVM参数设置、分析
- AFIO时钟何时开启
- MFC 打印.txt文件
- C++:命名空间(namespace)
- git---如何解决git pull之后报错:Please enter a commit to explain why this merge is necessary?(merge branch)
- mysql 复制表结构及数据
- HashMap实现原理分析
- iOS 逆向获取手机硬件参数