1_(去除ArrayList中重復(fù)字符串元素方式)*
A:案例演示
需求:ArrayList去除集合中字符串的重復(fù)值(字符串的內(nèi)容相同)
思路:創(chuàng)建新集合方式
import java.util.ArrayList; import java.util.Iterator; public class ArrayList_1_demo { /* 創(chuàng)建新集合將重復(fù)元素去掉 * 1.明確返回值類型,返回ArrayList * 2.明確參數(shù)列表ArrayList * */ public static void main(String[] args) { ArrayList list = new ArrayList(); list.add("a"); list.add("a"); list.add("b"); list.add("c"); list.add("d"); list.add("c"); list.add("b"); ArrayList newList = getSingle(list); System.out.println(newList); } public static ArrayList getSingle(ArrayList list) { ArrayList newList = new ArrayList(); //1.創(chuàng)建新集合 Iterator it = list.iterator(); //2.根據(jù)傳入的集合(老集合)獲取迭代器 while(it.hasNext()) { //3.遍歷老集合 Object obj = it.next(); //4.臨時(shí)記錄每一個(gè)元素 if(!newList.contains(obj)) { //5.如果新集合中不包含老集合中的元素 newList.add(obj); //6.將新元素添加到新集合中 } } return newList; //7.將新集合返回 } }2_(去除ArrayList中重復(fù)自定義對(duì)象元素)*
A:案例演示
需求:ArrayList去除集合中自定義對(duì)象元素的重復(fù)值(對(duì)象的成員變量值相同)
B:注意事項(xiàng)
重寫equals()方法的
contains方法判斷是否包含,底層依賴的是equals方法
remove方法判斷是否刪除,底層依賴的是equals方法
import java.util.ArrayList; import java.util.Iterator; import net.allidea.bean.Person; @SuppressWarnings({ "rawtypes", "unchecked" }) public class ArrayList_2_demo { public static void main(String[] args) { ArrayList list = new ArrayList(); //創(chuàng)建集合對(duì)象 list.add(new Person("張三",23)); list.add(new Person("李四",24)); list.add(new Person("張三",23)); list.add(new Person("張三",23)); list.add(new Person("王五",23)); list.add(new Person("李四",24)); // ArrayList newList = getSingle(list); //調(diào)用方法去除重復(fù) // System.out.println(newList); list.remove(new Person("張三",23)); System.out.println(list); } public static ArrayList getSingle(ArrayList list) { ArrayList newList = new ArrayList(); //1.創(chuàng)建新集合 Iterator it = list.iterator(); //2.根據(jù)傳入的集合(老集合)獲取迭代器 while(it.hasNext()) { //3.遍歷老集合 Object obj = it.next(); //4.臨時(shí)記錄每一個(gè)元素 if(!newList.contains(obj)) { //5.如果新集合中不包含老集合中的元素 newList.add(obj); //6.將新元素添加到新集合中 } } return newList; //7.將新集合返回 } }
@Override//重寫equals方法 public boolean equals(Object obj) { Person p = (Person)obj; return this.name.equals(p.name) && this.age == p.age; }3_(LinkedList的特有功能)*
A:LinkedList類概述
B:LinkedList類特有功能
public void addFirst(E e)及addLast(E e)
public E getFirst()及getLast()
public E removeFirst()及public E removeLast()
public E get(int index);
import java.util.LinkedList; public class ArrayList_3_LinkedList { public static void main(String[] args) { LinkedList list = new LinkedList(); list.addFirst("a"); list.addFirst("b"); list.addFirst("c"); list.addFirst("d");//在頭部添加 list.addLast("e");//在尾部添加 // System.out.println(list.getFirst());//打印頭部元素 // System.out.println(list.getLast());//打印尾部元素 // System.out.println(list.removeFirst());//刪除頭 // System.out.println(list.removeLast());//刪除尾 System.out.println(list.get(1)); System.out.println(list); } }4_(棧和隊(duì)列數(shù)據(jù)結(jié)構(gòu))*
棧
先進(jìn)后出 (裝子彈原理)
隊(duì)列
先進(jìn)先出(水龍頭原理)
5_用LinkedList模擬棧數(shù)據(jù)結(jié)構(gòu)的集合并測(cè)試*
A:案例演示
需求:請(qǐng)用LinkedList模擬棧數(shù)據(jù)結(jié)構(gòu)的集合,并測(cè)試
創(chuàng)建一個(gè)類將Linked中的方法封裝
import java.util.LinkedList; import java.util.Stack; public class ArrayList_4_LinkedList { public static void main(String[] args) { // demo1(); stack s = new stack(); //進(jìn)棧 s.in("a"); s.in("b"); s.in("c"); s.in("d"); while(!s.isEmpty()) { //是否為空 System.out.println(s.out());//彈棧 } } private static void demo1() { LinkedList list = new LinkedList(); list.addLast("a"); list.addLast("b"); list.addLast("c"); list.addLast("d"); /* System.out.println(list.removeLast()); System.out.println(list.removeLast()); System.out.println(list.removeLast()); System.out.println(list.removeLast());*/ while (!list.isEmpty()) { System.out.println(list.removeLast()); } } }
import java.util.LinkedList; public class stack { private LinkedList list = new LinkedList(); //模擬進(jìn)棧方法 public void in(Object obj) { list.addLast(obj); } //模擬出棧方法 public Object out() { return list.removeLast(); } //模擬棧結(jié)構(gòu)是否為空 public boolean isEmpty() { return list.isEmpty(); } }6_泛型概述和基本使用*
A:泛型概述
B:泛型好處
提高安全性(將運(yùn)行期的錯(cuò)誤轉(zhuǎn)換到編譯期)
省去強(qiáng)轉(zhuǎn)的麻煩
C:泛型基本使用
<>中放的必須是引用數(shù)據(jù)類型
D:泛型使用注意事項(xiàng)
前后的泛型必須一致,或者后面的泛型可以省略不寫(1.7的新特性菱形泛型)
import java.util.ArrayList; import java.util.Iterator; import net.allidea.bean.Person; public class Generic_1_demo { public static void main(String[] args) { // demo1(); // int[] arr = new byte[5]; //數(shù)組要保證前后的數(shù)據(jù)類型一致 // ArrayList7_ArrayList存儲(chǔ)字符串和自定義對(duì)象并遍歷泛型版*
A:案例演示
ArrayList存儲(chǔ)字符串并遍歷泛型版
import java.util.ArrayList; import java.util.Iterator; import net.allidea.bean.Person; public class Generic_2_demo public static void main(String[] args) { // demo1(); demo2(); } private static void demo2() { ArrayList8_泛型的由來(lái)(了解)list = new ArrayList<>(); list.add(new Person("張三",23)); list.add(new Person("李四",24)); list.add(new Person("王五",25)); list.add(new Person("趙六",26)); Iterator it = list.iterator(); while(it.hasNext()) { Person p = it.next(); //將集合中的每一個(gè)元素用Person記錄 System.out.println(p.getName() + "..." + p.getAge()); } } private static void demo1() { ArrayList list = new ArrayList(); //創(chuàng)建集合對(duì)象 list.add("a"); list.add("b"); list.add("c"); list.add("d"); Iterator it = list.iterator(); while(it.hasNext()) { System.out.println(it.next()); } } }
A:案例演示
泛型的由來(lái):通過Object轉(zhuǎn)型問題引入
早期的Object類型可以接收任意的對(duì)象類型,但是在實(shí)際的使用中,會(huì)有類型轉(zhuǎn)換的問題。也就存在這隱患,所以Java提供了泛型來(lái)解決這個(gè)安全問題。
import net.allidea.bean.Animal; //Animal 繼承 Person及其構(gòu)造 import net.allidea.bean.Person; //Person private String name;private int age; import net.allidea.bean.Tool; //Tool 自定義類private Object obj; import net.allidea.bean.Worker; //Worker 繼承 Person及其構(gòu)造 public class Generic_3_demo { public static void main(String[] args) { Tool t = new Tool(); //創(chuàng)建工具類對(duì)象 t.setObj(new Animal("張三",23)); Worker w = (Worker)t.getObj(); //向下轉(zhuǎn)型 System.out.println(w); } }9_泛型類的概述及使用(了解)
A:泛型類概述
把泛型定義在類上
B:定義格式
public class 類名<泛型類型1,…>
C:注意事項(xiàng)
泛型類型必須是引用類型
D:案例演示
泛型類的使用
import net.allidea.bean.Animal; //Animal 繼承 Person及其構(gòu)造 import net.allidea.bean.Person; //Person private String name;private int age; import net.allidea.bean.Tool; //Tool 自定義類private Object obj; import net.allidea.bean.Worker; //Worker 繼承 Person及其構(gòu)造 public class Generic_3_demo { public static void main(String[] args) { Toolt = new Tool<>(); //創(chuàng)建工具類對(duì)象 t.setObj(new Animal("張三",23)); // Worker w = (Worker)t.getObj(); //報(bào)錯(cuò) // System.out.println(w); } }
//Tool文件 package net.allidea.bean; public class Tool10_泛型方法的概述和使用(了解){ //E代表元素 private Q q; public Q getObj() { return q; } public void setObj(Q q) { this.q = q; } }
A:泛型方法概述
把泛型定義在方法上
B:定義格式
public <泛型類型> 返回類型 方法名(泛型類型 變量名)
C:案例演示
泛型方法的使用
import net.allidea.bean.Animal; //Animal 繼承 Person及其構(gòu)造 import net.allidea.bean.Tool; //Tool 自定義類private Object obj; public class Generic_3_demo { public static void main(String[] args) { Toolt = new Tool<>(); // t.show("abc"); t.show(true); //無(wú)類型,自動(dòng)裝箱 } }
package net.allidea.bean; public class Tool11_泛型接口的概述和使用(了解){ //E代表元素 private Q q; public Q getObj() { return q; } public void setObj(Q q) { this.q = q; } publicvoid show(T t) { //方法泛型需要與類的泛型一致 System.out.println(t); //如果不一致,需要在方法上聲明該類型 } public static void print(Q q) { //靜態(tài)方法必須聲明自己的泛型,加載早此Q非彼Q System.out.println(q); } }
A:泛型接口概述
把泛型定義在接口上
B:定義格式
public interface 接口名<泛型類型>
C:案例演示
泛型接口的使用
package net.allidea.Generic; public class Generic_4_demo { public static void main(String [] args) { } } interface Inter12_(泛型高級(jí)之通配符)(了解){ //接口泛型 public void show(T t); //抽象方法 } /*class Demo implements Inter { //第一種方式實(shí)現(xiàn)接口泛型,推薦 @Override public void show(String t) { //重寫抽象方法 System.out.println(t); } }*/ class Demo implements Inter { //沒有必要再實(shí)現(xiàn)接口的時(shí)候,給自己類加泛型 @Override public void show(T t) { System.out.println(t); } }
A:泛型通配符>
任意類型,如果沒有明確,那么就是Object以及任意的Java類了
B:? extends E
向下限定,E及其子類
C:? super E
向上限定,E及其父類
import java.util.ArrayList; import java.util.List; import net.allidea.bean.Person; import net.allidea.bean.Animal; public class Generic_5_demo { public static void main(String[] args) { // List> list = new ArrayList13_增強(qiáng)for的概述和使用*(); //當(dāng)右邊泛型是不確定時(shí),左邊可以指定為? ArrayList list1 = new ArrayList<>(); list1.add(new Person("張三",23)); list1.add(new Person("李四",24)); list1.add(new Person("王五",25)); ArrayList list2 = new ArrayList<>(); list2.add(new Animal("趙六",26)); list2.add(new Animal("田七",27)); list1.addAll(list2); //Animal繼承Person System.out.println(list1); } }
A:增強(qiáng)for概述——簡(jiǎn)化數(shù)組和Collection集合的遍歷
B:格式:
for(元素?cái)?shù)據(jù)類型 變量 : 數(shù)組或者Collection集合) { 使用變量即可,該變量就是元素 }
C:案例演示——數(shù)組,集合存儲(chǔ)元素用增強(qiáng)for遍歷
D:好處——簡(jiǎn)化遍歷
import java.util.ArrayList; public class Foreach_1_demo { public static void main(String[] args) { int[] arr = {11,22,33,44,55,66}; for(int i : arr) { System.out.println(i); } ArrayList14_ArrayList存儲(chǔ)字符串和自定義對(duì)象并遍歷增強(qiáng)for版 *list = new ArrayList<>(); list.add("a"); list.add("b"); list.add("c"); list.add("d"); for (String string : list) { System.out.println(string); } } }
ArrayList存儲(chǔ)字符串并遍歷增強(qiáng)for版
增強(qiáng)for循環(huán)底層依賴的是迭代器(Iterator)
public static void main(String[] args) { ArrayList15_三種迭代的能否刪除*list = new ArrayList<>(); list.add(new Person("張三",23)); list.add(new Person("李四",24)); list.add(new Person("王五",25)); list.add(new Person("趙六",26)); list.add(new Person("田七",27)); for (Person person : list) { System.out.println(person); } }
普通for循環(huán),可以刪除,但是索引要--
迭代器,可以刪除,但是必須使用迭代器自身的remove方法,否則會(huì)出現(xiàn)并發(fā)修改異常
增強(qiáng)for循環(huán)不能刪除
public static void main(String[] args) { ArrayList16_靜態(tài)導(dǎo)入的概述和使用(了解)list = new ArrayList<>(); list.add("a"); list.add("b"); list.add("b"); list.add("c"); list.add("d"); list.add("b"); //普通for循環(huán)刪除,索引要-- /*for (int i = 0; i < list.size(); i++) { if("b".equals(list.get(i))) { list.remove(i--); //通過索引刪除元素 } }*/ //迭代器刪除 /*Iterator it = list.iterator(); while(it.hasNext()) { if("b".equals(it.next())) { // list.remove("b"); //不能用集合的刪除方法,會(huì)報(bào)并發(fā)修改異常 it.remove(); } }*/ /*for(Iterator it2 = list.iterator(); it2.hasNext();) { if("b".equals(it2.next())) { it2.remove(); } }*/ //增強(qiáng)for循環(huán),不能刪除,只能遍歷 for (String String : list) { if("b".equals(String)) { list.remove("b"); } } System.out.println(list); }
A:靜態(tài)導(dǎo)入概述
靜態(tài)導(dǎo)入時(shí)導(dǎo)入類中的靜態(tài)方法;
B:格式:
import static 包名….類名.方法名;
可以直接導(dǎo)入到方法的級(jí)別
C:注意事項(xiàng)
方法必須是靜態(tài)的,如果有多個(gè)同名的靜態(tài)方法,容易不知道使用誰(shuí)?
這個(gè)時(shí)候要使用,必須加前綴。由此可見,意義不大,所以一般不用,但是要能看懂。
import static java.util.Arrays.sort; import static java.util.Arrays.*; public class StaticImport_2_demo { public static void main(String[] args) { int[] arr = {11,33,55,66,99,44}; sort(arr); //排序 System.out.println(Arrays.toString(arr)); } }17_可變參數(shù)的概述和使用*
A:可變參數(shù)概述
定義方法的時(shí)候不知道該定義多少個(gè)參數(shù)
B:格式
修飾符 返回值類型 方法名(數(shù)據(jù)類型… 變量名){}
C:注意事項(xiàng):
這里的變量其實(shí)是一個(gè)數(shù)組
如果一個(gè)方法有可變參數(shù),并且有多個(gè)參數(shù),那么,可變參數(shù)肯定是最后一個(gè)
public class ChangeableArgs_3_demo { public static void main(String[] args) { int[] arr = {11,22,33,44,55}; // print(arr); print(11,22,33,44,55); System.out.println("------------"); print(0, arr); } /*public static void print(int[] arr) { for (int i = 0; i < arr.length; i++) { System.out.println(arr[i]); } }*/ public static void print(int x,int ... arr) { //可變參數(shù)是一個(gè)數(shù)組 for (int i = 0; i < arr.length; i++) { System.out.println(arr[i]); } } }18_Arrays工具類的asList()方法的使用*
A:案例演示
Arrays工具類的asList()方法的使用
Collection中toArray(T[] a)泛型版的集合轉(zhuǎn)數(shù)組
import java.util.ArrayList; import java.util.Arrays; import java.util.List; public class Demo4_Aslist { public static void main(String[] args) { // demo1(); // demo2(); //集合轉(zhuǎn)數(shù)組,加泛型的 ArrayList19_集合嵌套之ArrayList嵌套ArrayList*list = new ArrayList<>(); list.add("a"); list.add("b"); list.add("c"); list.add("d"); String[] arr = list.toArray(new String[10]);//當(dāng)集合轉(zhuǎn)換數(shù)組時(shí),數(shù)組長(zhǎng)度<=集合的size時(shí),轉(zhuǎn)換后的數(shù)組等于集合的size for (String string : arr) { //如果數(shù)組的長(zhǎng)度大于了size,分配的數(shù)組長(zhǎng)度就和你指定的長(zhǎng)度一樣 System.out.println(string); } } private static void demo2() { /*int[] arr = {11,22,33,44,55,66}; //將整個(gè)數(shù)組當(dāng)做一個(gè)引用類型 List list = Arrays.asList(arr); //基本數(shù)據(jù)類型的數(shù)組轉(zhuǎn)換成集合,會(huì)將整個(gè)數(shù)組當(dāng)作一個(gè)集合 System.out.println(list);*/ Integer[] arr = {11,22,33,44,55}; List list = Arrays.asList(arr); //將數(shù)組轉(zhuǎn)換成集合,數(shù)組必須是引用數(shù)據(jù)類型 System.out.println(list); } private static void demo1() { String[] arr = {"a","b","c","d","e","f","g"}; List list = Arrays.asList(arr); //將數(shù)組轉(zhuǎn)換成集合 list.add("h"); //不能添加 System.out.println(list); } }
A:案例演示
集合嵌套之ArrayList嵌套ArrayList
案例
學(xué)科——分若干個(gè)班級(jí)
學(xué)科是一個(gè)大集合
若干個(gè)班級(jí)分為每一個(gè)小集合
import java.util.ArrayList; import net.allidea.bean.Person; public class List_6_ArrayList { public static void main(String[] args) { ArrayList> list = new ArrayList<>(); ArrayList first = new ArrayList<>(); //創(chuàng)建第一個(gè)班級(jí) first.add(new Person("楊冪",30)); first.add(new Person("胡歌",36)); first.add(new Person("郭富城",50)); first.add(new Person("周杰倫",38)); ArrayList second = new ArrayList<>(); second.add(new Person("黃曉明",31)); second.add(new Person("趙薇",31)); second.add(new Person("陳坤",31)); //將班級(jí)添加到學(xué)科集合中 list.add(first); list.add(second); //遍歷學(xué)科集合 for(ArrayList a : list) { for(Person p : a) { System.out.println(p); } } } }
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/77199.html
摘要:并把最終的隨機(jī)數(shù)輸出到控制臺(tái)。方法,在集合中如何存儲(chǔ)元素取決于方法的返回值返回,集合中只有一個(gè)元素。創(chuàng)建集合對(duì)象,傳入比較器。 1_HashSet存儲(chǔ)字符串并遍歷 A:Set集合概述及特點(diǎn) 通過API查看即可 B:案例演示 HashSet存儲(chǔ)字符串并遍歷 import java.util.HashSet; public class Demo1_HashSet { p...
摘要:不用自己來(lái)創(chuàng)建,而是通過池來(lái)獲取對(duì)象使用完后,調(diào)用的方法也不會(huì)真的關(guān)閉,而是把歸還給池連接池技術(shù)可以完成對(duì)象的再次利用接口為數(shù)據(jù)庫(kù)連接池提供了公共的接口各個(gè)廠商需要讓自己的連接池實(shí)現(xiàn)這個(gè)接口。 1.DButils工具類的介紹個(gè)三個(gè)核心類 A: 概述 DBUtils是java編程中的數(shù)據(jù)庫(kù)操作實(shí)用工具,小巧簡(jiǎn)單實(shí)用。 DBUtils封裝了對(duì)JDBC的操作,簡(jiǎn)化了JDBC操作,可以少...
摘要:我的是忙碌的一年,從年初備戰(zhàn)實(shí)習(xí)春招,年三十都在死磕源碼,三月份經(jīng)歷了阿里五次面試,四月順利收到實(shí)習(xí)。因?yàn)槲倚睦砗芮宄业哪繕?biāo)是阿里。所以在收到阿里之后的那晚,我重新規(guī)劃了接下來(lái)的學(xué)習(xí)計(jì)劃,將我的短期目標(biāo)更新成拿下阿里轉(zhuǎn)正。 我的2017是忙碌的一年,從年初備戰(zhàn)實(shí)習(xí)春招,年三十都在死磕JDK源碼,三月份經(jīng)歷了阿里五次面試,四月順利收到實(shí)習(xí)offer。然后五月懷著忐忑的心情開始了螞蟻金...
摘要:布爾值布爾值和布爾代數(shù)的表示完全一致,一個(gè)布爾值只有兩種值的數(shù)據(jù)類型可以通過內(nèi)置的函數(shù)查詢,例如還可以用來(lái)判斷和的區(qū)別在于不會(huì)認(rèn)為子類是一種父類類型。會(huì)認(rèn)為子類是一種父類類型。基本功能是進(jìn)行成員關(guān)系測(cè)試和刪除重復(fù)元素。 ...
閱讀 2679·2023-04-25 20:28
閱讀 1849·2021-11-22 09:34
閱讀 3687·2021-09-26 10:20
閱讀 1834·2021-09-22 16:05
閱讀 3085·2021-09-09 09:32
閱讀 2502·2021-08-31 09:40
閱讀 2099·2019-08-30 13:56
閱讀 3320·2019-08-29 17:01