20210416----java---list&map&stack
ArrayList<Integer> arrayList = new ArrayList<Integer>();
for (int i = 0; i < 100000; i++) {
arrayList.add(i);
}
for (int i = 0; i < 10000; i++) {
arrayList.get(i);
}
for (int i = 9999; i >=0; i--) {
arrayList.remove(i);
}
Iterator<String> it = list.iterator();
while (it.hasNext()) {
System.out.println(it.next());
}
2.indexOf(Object obj)方法和lastIndexOf(Object obj)方法的區別
在使用List集合時需要注意區分indexOf(Object obj)方法和lastIndexOf(Object obj)方法,前者是獲得指定對象的最小的索引位置,而后者是獲得指定對象的最大的索引位置,前提條件是指定的對象在List集合中具有重復的對象,否則如果在List集合中有且僅有一個指定的對象,則通過這兩個方法獲得的索引位置是相同的
在使用subList(int fromIndex, int toIndex)方法截取現有List集合中的部分對象生成新的List集合時,需要注意的是,新生成的集合中包含起始索引位置代表的對象,但是不包含終止索引位置代表的對象
如果涉及到多線程,那么就選擇Vector(當然,你也可以使用ArrayList并自己實現同步)。
如果不涉及到多線程就從LinkedList、ArrayList中選。 LinkedList更適合從中間插入或者刪除(鏈表的特性)。 ArrayList更適合檢索和在末尾插入或刪除(數組的特性)
遍歷方式
----1. 普通fori 方式遍歷
for (int i = 0; i < j; i++)
{
list.get(i);
}
----2. iterate()迭代器方式(collection 集合共有方法)
Iterator<Integer> iterator = list.iterator();
while (iterator.hasNext())
{
iterator.next();
}
for (Iterator<Integer> iterator = list.iterator();
{
iterator.next();
}
----3.增強for
for (int item : list)
{
// System.out.println(item);
}
----4.forEach() 注意java8 才支持
list.forEach(item ->
{ // System.out.println(item); });
----5. stream().forEach() 注意java8 才支持
list.stream().forEach(item -> { // System.out.println(item); });
----6. parallelStream().forEach() 注意java8 才支持
list.parallelStream().forEach(item -> { // System.out.println(item); });
Map
Map<Integer,Integer> map=new HashMap<>();
map.put(xx,xx)
map.get(xx)
map.containsKey(xx)
map.size()
map.remove()
map1.putAll(map2);//合并時如果map2的key與map1的key有重復的,則map2的鍵值覆蓋與map1重復的鍵值
map.clear();
map.values();
Collection values = map.values();
----------1. 這是最常用的方式,在鍵值都需要的時候map.entrySet() 加增強for------------------
for(Map.Entry<String, String> entry : map.entrySet()){
String mapKey = entry.getKey();
String mapValue = entry.getValue();
System.out.println(mapKey+":"+mapValue);
}
-------2. 在for循環中遍歷key或者values,一般適用于只需要map中的key或者value時使用,在性能上比使用entrySet較好;-------------
//key
for(String key : map.keySet()){
System.out.println(key);
}
//value
for(String value : map.values()){
System.out.println(value);
}
-------3. 通過鍵找值遍歷,這種方式的效率比較低,因為本身從鍵取值是耗時的操作--------------
for(String key : map.keySet()){
String value = map.get(key);
System.out.println(key+":"+value);
}
----4. 通過迭代器 map.entrySet().iterator()-----
Iterator<Entry<String, String>> entries = map.entrySet().iterator();
while(entries.hasNext()){
Entry<String, String> entry = entries.next();
String key = entry.getKey();
String value = entry.getValue();
System.out.println(key+":"+value);
}
-------5. JDK8新特性新增的lambda表達式遍歷Map的方法——Map.forEach();------------
map.forEach( (key,value) -> {} );
map.forEach((k,v)->
{
System.out.println(k+":"+v); });
---map.entrySet().stream().forEach 注意:java8 才支持----
map.entrySet().stream().forEach( (entry) -> {} );
數組、鏈表、隊列、棧,是數據結構中最基礎的四大結構,數組和鏈表更是基礎中的基礎,后續所有復雜的數據結構都是在它們的基礎上演變而來的。 數組 https://article.itxueyuan.com/prE0je https://segmentfault.com/a/1190000023501433
Stack
empty(), 判斷是否為空
peek(), 查看棧頂元素
pop(), 移除棧頂元素
push(), 元素壓入棧中
Character Character.toUpperCase(c); Character.toLowerCase(c);
String s.charAt(i); s.toCharArray(); S.equals(T.substring(i,i+len_s))

浙公網安備 33010602011771號