Java--集合(LinkedList,泛型)
来源:互联网 发布:淘宝怎么打人工电话 编辑:程序博客网 时间:2024/06/06 02:15
LinkedList
一、LinkedList类
[1]public void addFirst(E e)及addLast(E e)
[2]public E getFirst()及getLast()
[3]public E removeFirst()及public E removeLast()
[4]public E get(int index);
栈:先进后出,底端闭口
队列:先进先出,两端开口
import java.util.ArrayList;import java.util.LinkedList;@SuppressWarnings({ "rawtypes", "unchecked" })public class LinkedListMethod {public static void main(String[] args) {/* * 一、LinkedList类[1]public void addFirst(E e)及addLast(E e)[2]public E getFirst()及getLast()[3]public E removeFirst()及public E removeLast()[4]public E get(int index); * */initLinkedList();simulateSatck();//使用LinkedList模拟栈操作simulateQueue();//使用LinkedList模拟栈操作}//使用LinkedList模拟栈操作(先进后出)private static void simulateSatck() {System.out.println("===========模拟栈、队列============");Stack s = new Stack();s.in("a");s.in("b");s.in("c");s.in("d");s.forAll();System.out.println();while(!s.isEmpty()){System.out.print(s.outStack() + " ");}System.out.println();}//使用LinkedList模拟栈操作(先进后出)private static void simulateQueue() {System.out.println("===========模拟队列============");Stack s = new Stack();s.in("a");s.in("b");s.in("c");s.in("d");s.forAll();System.out.println();while(!s.isEmpty()){System.out.print(s.outQueue() + " ");}System.out.println();}private static void initLinkedList() {LinkedList li = new LinkedList();li.addFirst("a");li.addFirst("b");li.addFirst("c");li.addLast("e");System.out.println(li);li.removeFirst();li.removeLast();System.out.println(li);System.out.println(li.get(1));}}
LinkedList模拟栈和队列操作
import java.util.LinkedList;public class Stack {@SuppressWarnings("rawtypes")private LinkedList list = new LinkedList();@SuppressWarnings("unchecked")public void in(Object obj){list.add(obj);}//栈----先进后出public Object outStack(){return list.removeLast();}//队列----先进先出public Object outQueue(){return list.removeFirst();}public boolean isEmpty(){return list.isEmpty();}public void forAll(){for(int i = 0;i < list.size();i++){System.out.print(list.get(i) + " ");}}}
泛型
一、泛型概述和基本使用
1、泛型的由来:通过Object转型问题引入
早期的Object类型可以接收任意的对象类型,但是在实际的使用中,会有类型转换的问题。
也就存在这隐患,所以Java提供了泛型来解决这个安全问题。
2、泛型好处
提高安全性(将运行期的错误转换到编译期)
省去强转的麻烦
3、泛型基本使用
<>中放的必须是引用数据类型
4、泛型使用注意事项
前后的泛型必须一致,或者后面的泛型可以省略不写(1.7的新特性菱形泛型)
二、泛型类:泛型定义在类上
定义格式
public class 类名<泛型类型1,…>
泛型类型必须是引用类型
三、泛型方法:把泛型定义在方法上
定义格式
public <泛型类型> 返回类型 方法名(泛型类型 变量名)
四、泛型接口:把泛型定义在接口上
定义格式
public interface 接口名<泛型类型>
五、泛型通配符<?>:任意类型,如果没有明确,那么就是Object以及任意的Java类了
1、? extends E
向下限定,E及其子类
2、? super E
向上限定,E及其父类
六、增强for:简化数组和Collection集合的遍历
for(元素数据类型 变量 : 数组或者Collection集合) {
使用变量即可,该变量就是元素
}
七、静态导入概述
import static 包名….类名.方法名;
可以直接导入到方法的级别
注意事项:方法必须是静态的,如果有多个同名的静态方法,容易不知道使用谁?这个时候要使用,必须加前缀。
由此可见,意义不大,所以一般不用,但是要能看懂
八、可变参数:定义方法的时候不知道该定义多少个参数
格式
修饰符 返回值类型 方法名(数据类型… 变量名){}
注意事项:
这里的变量其实是一个数组
如果一个方法有可变参数,并且有多个参数,那么,可变参数肯定是最后一个
import java.util.ArrayList;import java.util.Arrays;import java.util.List;import java.util.Iterator;public class Generic {public static void main(String[] args) {/* * 一、泛型概述和基本使用 1、泛型的由来:通过Object转型问题引入早期的Object类型可以接收任意的对象类型,但是在实际的使用中,会有类型转换的问题。 也就存在这隐患,所以Java提供了泛型来解决这个安全问题。 2、泛型好处 提高安全性(将运行期的错误转换到编译期) 省去强转的麻烦3、泛型基本使用<>中放的必须是引用数据类型 4、泛型使用注意事项前后的泛型必须一致,或者后面的泛型可以省略不写(1.7的新特性菱形泛型) 二、泛型类:泛型定义在类上 定义格式 public class 类名<泛型类型1,…> 泛型类型必须是引用类型 三、泛型方法:把泛型定义在方法上 定义格式public <泛型类型> 返回类型 方法名(泛型类型 变量名) 四、泛型接口:把泛型定义在接口上 定义格式public interface 接口名<泛型类型> 五、泛型通配符<?>:任意类型,如果没有明确,那么就是Object以及任意的Java类了 1、? extends E向下限定,E及其子类 2、? super E向上限定,E及其父类 六、增强for:简化数组和Collection集合的遍历 for(元素数据类型 变量 : 数组或者Collection集合) {使用变量即可,该变量就是元素 } 七、静态导入概述 import static 包名….类名.方法名; 可以直接导入到方法的级别 注意事项 方法必须是静态的,如果有多个同名的静态方法,容易不知道使用谁?这个时候要使用,必须加前缀。 由此可见,意义不大,所以一般不用,但是要能看懂 八、可变参数:定义方法的时候不知道该定义多少个参数 格式 修饰符 返回值类型 方法名(数据类型… 变量名){} 注意事项: 这里的变量其实是一个数组 如果一个方法有可变参数,并且有多个参数,那么,可变参数肯定是最后一个 * */initGeneric();genericCome();addFor();//for增强removeFor();arrayToList();//数组转集合forFor();//嵌套循环}private static void forFor() {ArrayList<ArrayList<Student>> list = new ArrayList<>();ArrayList<Student> firstClass = new ArrayList<>();firstClass.add(new Student("利达",17));firstClass.add(new Student("利二",18));firstClass.add(new Student("利三",19));ArrayList<Student> secondClass = new ArrayList<>();secondClass.add(new Student("益达",17));secondClass.add(new Student("益二",18));secondClass.add(new Student("益三",19));list.add(firstClass);list.add(secondClass);for(ArrayList<Student> newClass :list){for(Student s : newClass){System.out.println(s);}}}/* * 数组转换成集合 * 数组转换成集合不能增加或减少元素,但是可以使用集合的思想操作数组,即可以使用其它集合中的方法 * */private static void arrayToList() {System.out.println("===========数组转集合===========");String[] sA = {"a","b","c","d"};List<String> list = (List<String>) Arrays.asList(sA);System.out.println(list);}private static void removeFor() {System.out.println("===========for删除===========");ArrayList<String> list = new ArrayList<>();list.add("a");list.add("b");list.add("b");list.add("c");list.add("d");////1、for删除//for (int i = 0; i < list.size(); i++) {//if("b".equals(list.get(i))){//list.remove(i--);//}//}//2、迭代器删除Iterator<String> it = list.iterator();while(it.hasNext()){if("b".equals(it.next())){//list.remove(it.next()); /*java.util.ConcurrentModificationException并发修改异常 不能使用集合的方法删除,因为迭代过程中如果修改就出现并发修改异常 */it.remove();//使用迭代器本身的方法}}////3、增强for循环//for (String string : list) {//if("b".equals(string)){//list.remove("b"); //增强for循环只能遍历不能删除//}//}System.out.println(list);}//for增强private static void addFor() {int[] arr = {11,22,33,44,55};for (int i : arr){System.out.print(i + " ");}System.out.println();ArrayList<String> list = new ArrayList<>();list.add("a");list.add("b");list.add("c");for (String string : list) {System.out.print(string + " ");}System.out.println();}private static void genericCome() {Tool<GirlStudent> t = new Tool<>();t.setObj(new GirlStudent("花季",16));//java.lang.ClassCastException 类转换异常//BoyStudent bs = (BoyStudent) t.getObj();GirlStudent gs = t.getObj();Tool<String> t1 = new Tool<>();t1.show("abc");}private static void initGeneric() {ArrayList<Student> arrList = new ArrayList<Student>();arrList.add(new Student("王二",18));arrList.add(new Student("张三",22));arrList.add(new Student("李四",20));arrList.add(new Student("赵六",16));Iterator<Student> it = arrList.iterator();while(it.hasNext()){//next方法只能调用一次,如果调用多次就会将指针向后移动多次;因此创建一个对象指向next获取的对象//System.out.println(it.next().getName() + "--" + it.next().getAge());Student s = it.next();System.out.println(s.getName() + "--" + s.getAge());}}}interface Inter<T>{public void show(T t);}class Demo implements Inter<String>{ //推荐使用这种方法public void show(String s){System.out.println(s);}}//class Demo<T> implements Inter<String>{ //实现接口时没必要对自己添加一个泛型//public void show(String s){//System.out.println(s);//}//}
泛型
//<一个大写字母>代表泛型public class Tool<E> {private E obj;public E getObj() {return obj;}public void setObj(E obj) {this.obj = obj;}public<T> void show(T t){ //非静态方法泛型最好与类泛型一致System.out.println(t); //如果不一致,最好在方法上声明该泛型;使用时传具体的值}public static<Q> void print(Q q){ //静态方法必须声明自己的泛型System.out.println(q);}}
- Java--集合(LinkedList,泛型)
- Java集合类--LinkedList
- JAVA 集合框架 LinkedList
- Java集合类--LinkedList
- java集合(LinkedList)
- Java集合之LinkedList
- java集合之LinkedList
- java集合类LinkedList
- Java集合框架:LinkedList
- 05.Java 集合 - LinkedList
- java集合-LinkedList
- java集合------LinkedList
- JAVA集合容器--LinkedList
- Java集合之LinkedList
- java集合-LinkedList
- 【java集合系列】--- LinkedList
- Java LinkedList 集合
- Java集合(LinkedList)
- NGUI 与世界坐标与屏幕坐标之间的转换的帮助类
- 蓝桥杯 大臣的旅费 (树的直径)
- 微信公众账号推送模板消息(java版)
- 将一个list对象数组按照指定的规则排序
- Ubuntu平台下源码编译Ambari 2.4
- Java--集合(LinkedList,泛型)
- Linux的SOCKET编程详解
- linux 查看日志的几种基本操作
- 淘宝内部券怎么赚钱
- 绘制星空升级版(使用图形变换translate和rotate)
- JSP+Servlet培训班作业管理系统[2]-后台管理页面
- RTMP学习(十一)rtmpdump源码阅读(6)请求播放
- 提高C#编程水平的50个要点 之二“在 readonly 和 const 之间,优先使用 readonly”
- 跨域