Java 中List集合特点

开发工具与关键技术:MyEclipse 10、list集合 
作者:
撰写时间:2019年06月06日

  今天来了解java中集合,java集合类是一种特别有用的工具类,我们做项目或者做一些小程序也有可能用到它;可用于存储数量不等的对象,并且可以实现常用的数据结构,比如栈、队列等。Java集合大致可以分List、Set、Queue和Map四种体系,主要详细讲讲List集合。那么List集合的主要有特点呢?List代表有序、重复的集合;还有一些基本的特点,如下面的代码:

    package com.gx.demo;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

public class ListDemo {
  public  static void  main(String[]  args){
	List<String> List=new ArrayList<>();    //实例化一个列表
//添加元素
List.add("A");
List.add("B");
List.add("C");
List.add("D");
List.add("A"); //允许添加重复元素
List.add(null);//允许添加空值
//移除
List.remove(1);//通过索引移除
List.remove("D");//通过元素移除元素
List<String> ListRemove=new ArrayList<>();
ListRemove.add("E");
ListRemove.add("F");
ListRemove.add("G");
List.remove(ListRemove);//移除多个元素
//输出list
//调试使用或者转义字符串 
System.out.println("List保存数据的顺序"+List);
 //遍历
System.out.println("for循环遍历");
//获取list元素个数list.size()
for (int i = 0; i < args.length; i++) {
//获取list中某个元素list.get(index)
 System.out.println(List.get(i)+"\t");//"\t"代表是一个空格键System.out.println("\nforeach 循环:");
for (String string : List) {
 System.out.print(string + "\t");
}
//Iterator迭代器
System.out.println("Iterator迭代器  while 遍历");
Iterator<String> iterator =List.iterator();
while (iterator.hasNext()){
//iterrator.hasNext()判断是否有下一个元素
System.out.println(iterator.next()+"\t");//iterator.next()获取下一个元素
} 
 System.out.println("\nIterator迭代器   for 遍历");
        for(Iterator<String> iterator2 =List.iterator();iterator2.hasNext();){
      String string = iterator2.next();
       System.out.println(string+"\t");
 } 
        System.out.println();
        // 返回对象o在List集合中第一次出现的位置索引。
        System.out.println("A元素第一次出现的位置:" + List.indexOf("A"));
        // 返回对象o在List集合中最后一次出现的位置索引。
        System.out.println("A元素最后一次出现的位置:" + List.lastIndexOf("A"));
        // 返回对象o在List集合中是否存在该元素
        System.out.println("List集合中是否存在元素:" + List.contains("A"));
        // 替换元素
        List.set(1, "D");
        System.out.println(List);
        //返回列表中指定的 fromIndex(包括 )和 toIndex(不包括)之间的部分视图 [fromIndex,toIndex)
        List<String> list = List.subList(1, 2);
        System.out.println("检查性元素"+list);
        // 判断集合是否为空
        System.out.println("List集合否为空:" + List.isEmpty());
        // 清空集合
        List.clear();
        System.out.println("List集合否为空:" + List.isEmpty());		
}
}
}

输出结果:
在这里插入图片描述
Comparable简介
   Comparable是排序接口。若一个类实现了Comparable接口,就意味着该类支持 排序。实现了Comparable接口的类的对象的列表或数组可以通过Collections.sort或 Arrays.sort进行自动排序。列子:

   package com.gx.demo;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Iterator;
import java.util.List;

public class ListComparable {
public static void main(String[] args) {
List<PersonComparable> persons = new ArrayList<PersonComparable>();
persons.add(new PersonComparable("小A",35));
persons.add(new PersonComparable("小B",25));
persons.add(new PersonComparable("小C",25));
persons.add(new PersonComparable("小D",12));
persons.add(new PersonComparable("小F",33)); 
//第三步:调用sort排序
Collections.sort(persons);
//使用迭代器遍历输出列表数据
Iterator<PersonComparable> iterator =persons.iterator();
while(iterator.hasNext()){
PersonComparable persion =iterator.next();
System.out.println(persion.getName()+"\t"+persion.getAge());
   	}
   }
// 第一步 :实现接口Comparable<T>
class PersonComparable implements Comparable<PersonComparable> {
private int age;
  private String name;
  public PersonComparable() {
super();
}
public PersonComparable( String name,int age) {
super();
this.age = age;
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
//第二步:实现compareTo方法o表示和当前对象比较另一个对象
public int compareTo(PersonComparable o){
//从小到大:this-o;
//从大到小 :o-this;
//return  this.age- o.age 默认是从小到大的排序的
if(this.age!=o.age){
return this.age-o.age;
}else{
return this.name.compareTo(o.name);
}
}
}

输出结果:
在这里插入图片描述
Comparator的简介
  Comparator是比较接口,我们如果需要控制某个类的次序,而该类本身不支持排序(即没有实现Comparable接口),那么我们就可以建立一个“该类的比较器”来进行排序,这个“比较器”只需要实现Comparator接口即可。也就是说,我们可以通过实现Comparator来新建一个比较器,然后通过这个比较器对类进行排序。
注意:1、若一个类要实现Comparator接口:它一定要实现compare(T o1, T o2) 函数,但可以不实现 equals(Object obj) 函数。
2、int compare(T o1, T o2) 是“比较o1和o2的大小”。返回“负数”,意味着“o1比o2小”;返回“零”,意味着“o1等于o2”;返回“正数”,意味着“o1大于o2”。

package com.gx.demo;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.Iterator;
import java.util.List;

public class ListComparator {
public static void main(String[] args) {
List<PersonComparator> persons = new ArrayList<>();
 persons.add(new PersonComparator("小A", 35));
 persons.add(new PersonComparator("小B", 25));
 persons.add(new PersonComparator("小C", 25));
 persons.add(new PersonComparator("小D", 12));
persons.add(new PersonComparator("小c", 33));
 persons.add(new PersonComparator("小a", 33)); 
// 调用sort 排序
Collections.sort(persons, new Comparator<PersonComparator>() {
@Overrid
public int compare(PersonComparator o1, PersonComparator o2) {
//从小到大:o1-o2 从大到小:o2-o1 
//改进比较方法:先根据年龄排序,如果年龄一样,根据姓名排序
if (o1.getAge() != o2.getAge()) {
return o1.getAge() - o2.getAge();
} else {
return o2.getName().compareTo(o1.getName());
}
}
});
  //使用迭代器遍历输出列表数据
Iterator<PersonComparator> iterator = persons.iterator();
while (iterator.hasNext()) {
PersonComparator persion = iterator.next();
System.out.println(persion.getName()+"\t"+persion.getAge());
}
}
}
class PersonComparator {
 private int age;
 private String name;
 public PersonComparator() {
}
public PersonComparator(String name, int age) {
this.name = name;
 this.age = age;
}
public int getAge() {
return age;
 }
public void setAge(int age) {
 this.age = age;
 }
public String getName() {
return name;
 }
 public void setName(String name) {
this.name = name;
}
}

输出结果:
在这里插入图片描述

发布了37 篇原创文章 · 获赞 8 · 访问量 5953

猜你喜欢

转载自blog.csdn.net/weixin_43741599/article/details/91357999