Java基礎之集合題目
阿新 • • 發佈:2018-12-26
1、
/*
* 分析以下需求,並用程式碼實現:
(1)生成10個1至100之間的隨機整數(不能重複),存入一個List集合(可以先不適用泛型,泛型明天講)
(2)編寫方法對List集合進行排序
(2)然後利用迭代器遍歷集合元素並輸出
(3)如:15 18 20 40 46 60 65 70 75 91
*/
public class Demo {
public static void main(String[] args) {
List list = getRandomNumList();
System.out.println("排序前的集合元素為:");
System.out.println(list );
sort(list);
System.out.println("排序後的集合元素為:");
System.out.println(list);
}
//定義生成隨機數並且裝入集合容器的方法
public static List getRandomNumList(){
//1.建立集合容器物件
List list = new ArrayList();
//2.建立Random物件
Random r = new Random();
/*for(int i = 0;i <= 9;i++){
int num = r.nextInt(100) + 1;
}*/
while(list.size() != 10){
int num = r.nextInt(100) + 1;
if(!list.contains(num)){
list.add(num);
}
}
return list;
}
//使用氣泡排序(升序)
public static void sort(List list){
for(int i = 0;i < list.size() - 1;i++){
for (int j = 0;j < list.size() - 1 - i;j++){
int num1 = (int)list.get(j);
int num2 = (int)list.get(j + 1);
if(num1 > num2){
int temp = num1;
num1 = (int)list.set(j, num2);
num2 = (int)list.set(j + 1, temp);
}
}
}
}
}
2、
/*
* 分析以下需求,並用程式碼實現:
現有一個list集合如下,
List alist = new ArrayList<>();
alist.add("sa");
alist.add("a");
alist.add("def");
alist.add("b");
alist.add("你好");
(1)利用迭代器遍歷這個集合!
(2)定義一個方法method1 , 刪除集合中字串"def" , 並列印集合
(3)定義一個方法method2 , 將原集合中的元素"a"和"b"交換位置! 並列印集合
//註釋: 所有的方法都是針對原集合而言!
*/
public class Demo1 {
public static void main(String[] args) {
List alist = new ArrayList<>();
alist.add("sa");
alist.add("a");
alist.add("def");
alist.add("b");
alist.add("你好");
Iterator it = alist.iterator();
while(it.hasNext()){
Object obj = it.next();
System.out.println(obj);
}
method1(alist);
System.out.println(alist);
method2(alist);
System.out.println(alist);
}
public static void method1(List list){
for (Iterator iterator = list.iterator(); iterator.hasNext();) {
Object object = (Object) iterator.next();
if("def".equals(object)){
iterator.remove();
}
}
}
public static void method2(List list){
int i1 = list.indexOf("a");
int i2 = list.indexOf("b");
list.set(i1, "b");
list.set(i2, "a");
}
}
3、
/*
* 分析以下需求,並用程式碼實現:
(1)定義List集合,存入多個字串
(2)刪除集合中包含0-9數字的字串(只要字串中包含0-9中的任意一個數字就需要刪除此整個字串)
(3)然後利用迭代器遍歷集合元素並輸出
List<String> list = new ArrayList<String>();
list.add("abce0fgh");
list.add("ab5e0f8gh");
list.add("000234ab5e0f8g9h");
list.add("abc");
list.add("def");
list.add("gh9i");
*/
public class Demo2 {
public static void main(String[] args) {
List<String> list = new ArrayList<String>();
list.add("abce0fgh");
list.add("ab5e0f8gh");
list.add("000234ab5e0f8g9h");
list.add("abc");
list.add("def");
list.add("gh9i");
deleteNum2(list);
System.out.println(list);
}
public static void deleteNum2(List<String> list){
Iterator<String> it = list.iterator();
while(it.hasNext()){
String str = it.next();
for(int i = 0;i <= 9;i++){
if(str.contains(i + "")){
it.remove();
break;
}
}
}
}
public static void deleteNum(List<String> list){
String regex = ".*\\d.*";
Iterator<String> it = list.iterator();
while(it.hasNext()){
String str = it.next();
if(str.matches(regex)){
it.remove();
}
}
}
}
/*
* 1.分析以下需求,並用程式碼實現:
(1)定義一個方法swap()傳入集合和兩個角標使集合中元素交換位置()
(2)思路
a.定義一個臨時變數, 記住其中一個元素
b.用第一個位置存放第二個位置上的元素
c.用第二個位置存放臨時變數記住的元素
*/
public class Demo {
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<String>();
list.add("aa");
list.add("bb");
list.add("cc");
list.add("dd");
list.add("ee");
System.out.println(list);
swap(list, 1, 3);
System.out.println(list);
System.out.println("---------");
ArrayList<Integer> list1 = new ArrayList<Integer>();
list1.add(111);
list1.add(222);
list1.add(333);
list1.add(444);
list1.add(555);
System.out.println(list1);
swap(list1, 1, 3);
System.out.println(list1);
}
//定義一個方法用於交換集合中兩個元素的值
public static <T> void swap(List<T> list,int i,int j){
T t = list.get(i);
list.set(i, list.get(j));
list.set(j, t);
}
}
/*
* 分析以下需求,並用程式碼實現:
(1)定義一個Person型別(屬性私有、空參有參構造、set、get方法、toString方法、equals方法、hashCode方法),
包含兩個屬性:姓名(String name)、年齡(int age)
(2)List集合中儲存多個Person物件,獲取年齡最大的Person物件並列印資訊
(3)思路
a.定義一個Person型別的變數, 先記住第一個元素
b.迴圈遍歷集合
c.用每一個元素和變數比較年齡, 如果集合中的元素比變數記住的年齡大
d.用變數記住這個年齡較大的元素
e.返回變數記住的元素
JavaBean
*/
public class Demo2 {
public static void main(String[] args) {
List<Person> list = new ArrayList<Person>();
list.add(new Person("張三", 20));
list.add(new Person("李四", 10));
list.add(new Person("王五", 50));
list.add(new Person("趙六", 40));
list.add(new Person("田七", 20));
System.out.println(getMaxAgePer(list));
}
public static Person getMaxAgePer(List<Person> pers){
Person maxPer = pers.get(0); // 假設集合第一個元素的年齡最大的
for(Person per : pers){
if(maxPer.getAge() < per.getAge()){
maxPer = per;
}
}
return maxPer;
}
}
/*分析以下需求,並用程式碼實現:
(1)將集合中的元素反轉
(2)思路
* a.定義迴圈, 迴圈size()/2次
b.第一次交換第一個和最後一個, 第二次交換第二個和倒數第二個
*/
public class Demo3 {
public static void main(String[] args) {
List<String> list = new ArrayList<String>();
list.add("aaa");
list.add("bbb");
list.add("ccc");
list.add("ddd");
list.add("eee");
System.out.println("反轉前的資料為:" + list);
reverse(list);
System.out.println("反轉後的資料為:" + list);
}
private static void reverse(List<String> list) {
for(int start = 0,end = list.size() - 1;start <= end;start++,end--){
String str1 = list.get(start);
String str2 = list.get(end);
list.set(start, str2);
list.set(end, str1);
}
}
}
/*
* 分析以下需求,並用程式碼實現:
(2)定義方法統計集合中指定元素出現的次數,如"a" 3,"b" 2,"c" 1
*/
public class Demo4 {
public static void main(String[] args) {
List<String> list = new ArrayList<>();
list.add("a");
list.add("a");
list.add("a");
list.add("b");
list.add("b");
list.add("c");
list.add("d");
list.add("d");
list.add("d");
list.add("d");
list.add("d");
System.out.println(frequency(list, "a")); // 3
System.out.println(frequency(list, "b")); // 2
System.out.println(frequency(list, "c")); // 1
System.out.println(frequency(list, "d")); // 5
System.out.println(frequency(list, "xxx")); // 0
}
private static int frequency(List<String> list, String str) {
int index = 0; //定義一個計數器
Iterator<String> it = list.iterator();
while(it.hasNext()){
String next = it.next();
if(str.equals(next)){
index++;
}
}
return index;
}
}
/*
* 分析以下需求,並用程式碼實現:
(1)定義一個replaceAll方法,用傳入集合的新值new 去替換 集合中指定的老值old(list,old,new)
*/
public class Demo5 {
public static void main(String[] args) {
List<String> list = new ArrayList<>();
list.add("a");
list.add("a");
list.add("a");
list.add("b");
list.add("b");
list.add("c");
System.out.println("替換前為:" + list);
replaceAll(list,"a","aaa");
System.out.println("替換後為:" + list);
}
private static void replaceAll(List<String> list, String oldValue, String newValue) {
//使用一般for迴圈來實現
for(int i = 0;i < list.size();i++){
String str = list.get(i);
if(oldValue!=null && oldValue.equals(str)){
list.set(i, newValue);
}
}
}
}