Java基础提高篇(三)持有对象
来源:互联网 发布:热血传奇网络加速器 编辑:程序博客网 时间:2024/06/14 20:30
1.添加一组元素
通过Arrays.asList()或者Collections.addAll()添加一组元素
Arrays.asList()方法接收一个数组或一个用逗号分隔的元素列表
Collections.addAll(),接收一个Collection对象,以及一个数组或一个用逗号分隔的元素列表(推荐使用这种方法)
public class Demo1 { public static void main(String[] args) { List<Integer> list1 = Arrays.asList(1, 2, 3); System.out.println(list1); // [1,2,3] // list1.add(4); 报错java.lang.UnsupportedOperationException // 因为Arrays.asList底层是数组,数组大小无法改变 list1.set(1, 4); // 修改数据 System.out.println(list1); // [1,4,3] Collection<Integer> collection = new ArrayList<Integer>(Arrays.asList(1, 2, 3)); Collections.addAll(collection, 4, 5, 6); System.out.println(collection);// [1, 2, 3, 4, 5, 6] Integer[] integers = { 7, 8, 9 }; Collections.addAll(collection, integers); System.out.println(collection); // [1, 2, 3, 4, 5, 6, 7, 8, 9] }}
2.List,Set,Map的区别
先看一个小例子
class NBA{ static Collection<Object> fill(Collection<Object> collection){ collection.add("火箭"); collection.add("骑士"); collection.add("马刺"); collection.add("马刺"); return collection; } static Map fill(Map<String, String> map){ map.put("hj","火箭"); map.put("qs","骑士"); map.put("mc","马刺"); map.put("mc","马刺"); return map; }}public class Demo1 { public static void main(String[] args) { System.out.println(NBA.fill(new ArrayList<>())); //[火箭, 骑士, 马刺, 马刺] System.out.println(NBA.fill(new LinkedList<>())); //[火箭, 骑士, 马刺, 马刺] System.out.println(NBA.fill(new HashSet<>())); //[马刺, 火箭, 骑士] System.out.println(NBA.fill(new LinkedHashSet<>())); // [火箭, 骑士, 马刺] System.out.println(NBA.fill(new TreeSet<>()));// [火箭, 马刺, 骑士] System.out.println(NBA.fill(new HashMap())); // {mc=马刺, hj=火箭, qs=骑士} System.out.println(NBA.fill(new LinkedHashMap())); // {hj=火箭, qs=骑士, mc=马刺} System.out.println(NBA.fill(new TreeMap())); // {hj=火箭, mc=马刺, qs=骑士} }}
List:以特定的顺序保存元素
List有二种类型:
1.ArrayList:擅长随机访问元素,但是在List中间插入和移除元素比较慢
2.LinkedList:擅长在List中间插入和移除元素,但随机访问元素慢
Set:元素不能重复
Map:在每个槽内保存了二个对象,即键与之相关联的值。
HashSet使用了相当复杂的方式存储元素,它是最快获取元素的方式。
TreeSet:按照比较结果的升序保存对象
LinkedHashSet:按照被添加的顺序保存对象
HashMap,LinkedHashMap,TreeMap和Set相类似。
迭代器
Java的Iterator只能单向移动,用于遍历数据
ListInterator是可以双向移动的
public class Demo1 { public static void main(String[] args) { List<Integer> list = Arrays.asList(1, 2, 3); // 1.获得Iterator对象 Iterator<Integer> iterator = list.iterator(); // 检查序列中是否还有元素 while (iterator.hasNext()) { // 获取序列中的下一个元素 Integer value = iterator.next(); System.out.println(value); } System.out.println("---------------"); // 用foreach更简单 for (Integer integer : list) { System.out.println(integer); } }}
LinkedList常用方法
1.getFirst()和element() 返回第一个元素,并不移除,如果List为空,抛出NoSuchElementException.peek()在列表为空时,返回null
2.removeFirst和remove,移除并返回列表的头,而在列表为空时抛出NoSuchElementException.poll()在列表为空时,返回null
3.addFirst(),add(),addLast(),都将某元素插入到列表的头尾。
4.removeLast()移除并返回列表的最后一个元素。
栈与队列
栈是一种后进后出的容器。而队列是一种先进先出的容器。LinkedList拥有各种栈与队列的行为。
- Java基础提高篇(三)持有对象
- java基础-持有对象
- Java基础:持有对象
- java基础之持有对象
- 深入java--持有对象(集合基础)
- java基础学习之持有对象(容器)
- java持有对象map(三)-对象化计数
- Java容器 持有对象
- Java中的持有对象
- java持有对象
- Java 持有对象
- java持有对象
- java之持有对象
- JAVA持有对象
- java 持有对象,容器
- java编程思想笔记--持有对象部分三
- [Java基础] 持有对象(集合框架)-Set-TreeSet
- Thinking in Java:持有对象
- Intellij IDEA 弹窗License activation 报 this license BIG3CLIK6F has been cancelled 错误的解决。
- 【游记】ZJOI 2017 Day2 #2
- 类模板和宏定义应用
- NYOJ-ACM- 数数
- java中的‘==’和equals()区别
- Java基础提高篇(三)持有对象
- 弗洛伊德算法(求各顶点间最短路径):可打印最短路径
- acm-2026
- eclipse中使用git
- RecycleView一页只显示一个列表项
- 互斥锁和条件变量(1)
- (转)今天的人工智能比肩工业革命毫不夸张
- 迪杰斯特拉算法(可打印最短路径)
- strchr函数的使用