新闻资讯
看你所看,想你所想

java列表

java列表

集合是Java API所提供的一系列类,可以用于动态存放多个对象。集合与数组的不同在于,集合是大小可变的序列,而且元素类型可以不受限定,只要是引用类型。集合中不能放基本数据类型,但可以放基本数据类型的包装类。 集合类全部支持泛型,是一种数据安全的用法。java列表是集合的一种,并且列表中的元素是有序的,且允许重複。java列表又称为java list。

基本介绍

  • 中文名:java列表
  • 外文名:java list
  • 性质:java的一种集合
  • 特点:以线性存储,可重複
  • 套用範围:java语言编程
  • 套用学科:电脑程式设计

用法

实际上有两种List:一种是基本的ArrayList,其优点在于随机访问元素,另一种是更强大的LinkedList,它并不是为快速随机访问设计的,而是具有一套更通用的方法。次序是List最重要的特点:它保证维护元素特定的顺序。List为Collection添加了许多方法,使得能够向List中间插入与移除元素(这只推荐LinkedList使用)。一个List可以生成ListIterator,使用它可以从两个方向遍历List,也可以从List中间插入和移除元素。

ArrayList

ArrayList:是由数组实现的List。允许对元素进行快速随机访问,但是向List中间插入与移除元素的速度很慢。ListIterator只应该用来由后向前遍历 ArrayList,而不是用来插入和移除元素。因为那比LinkedList开销要大很多。
下面举出一个例子来说明ArrayList的用法。
public static void main(String[] args) {    // ArrayList类实现一个可增长的动态数组    List<String> list = new ArrayList<String>();    // 插入元素    list.add("list1");    list.add("list2");    // 列印list的大小    System.out.println(list.size());    // 按索引移除元素    list.remove(0);    // 按对象移除元素    list.remove("list2");    // 列印list的大小    System.out.println(list.size());    // 清空list    list.clear();}

LinkedList

LinkedList :对顺序访问进行了最佳化,向List中间插入与删除的开销并不大。随机访问则相对较慢。(使用ArrayList代替)还具有下列方 法:addFirst(), addLast(), getFirst(), getLast(), removeFirst() 和 removeLast(), 这些方法 (没有在任何接口或基类中定义过)使得LinkedList可以当作堆叠、伫列和双向伫列使用。
下面举出一个例子来说明ArrayList的用法。
public static void main(String[] args) {    // LinkedList类实现了鍊表,可初始化化为空或者已存在的集合    LinkedList<String> list = new LinkedList<String>();    // 插入元素    list.add("list2");    list.add("list3");    // 向鍊表头插入数据    list.addFirst("list1");    // 向鍊表尾插入数据    list.addLast("list4");    for (String str : list) {        System.out.println(str);    }    // 获取鍊表头数据    System.out.println("鍊表头数据:" + list.getFirst());    // 获取鍊表尾数据    System.out.println("鍊表尾数据:" + list.getLast());}

排序方法

数字排序

数字排序是对数字进行排序。下面用java写出数字排序的表示方式。
public static void main(String[] args) {   // 创建list     List<Integer> list = new ArrayList<Integer>();      // 插入元素      list.add(2);      list.add(0);      list.add(3);      list.add(4);      list.add(1);      Collections.sort(list);     for (int i : list)  {             System.out.println(i);      }}

中文排序

中文排序是按照一定规则对中文进行排序。下面用java写出中文排序的表示方式。
public static void main(String[] args) {    ArrayList<String> list = new ArrayList<String>();    list.add("一鸣惊人-Y");    list.add("人山人海-R");    list.add("海阔天空-H");    list.add("空前绝后-K");    list.add("后来居上-H");    Comparator<Object> cmp = Collator.getInstance(java.util.Locale.CHINA);    Collections.sort(list, cmp);    for (String str : list) {        System.out.println(str);    }}

实体类排序

实体类排序是按照一定规则进行的排序。下面用java写出实体类排序的表示方式。
package net.xsoftlab.baike;import java.util.ArrayList;import java.util.Collections;import java.util.Comparator;import java.util.List;public class TextList {    public static void main(String[] args) {        List<User> userlist = new ArrayList<User>();        userlist.add(new User("Y - 易小星 ", 33));        userlist.add(new User("W - 王大锤", 33));        Comparator<User> cmp = new ComparatorUser();        Collections.sort(userlist, cmp);        for (User user : userlist) {            System.out.println(user.getName());        }    }}class ComparatorUser implements Comparator<User> {    @Override    public int compare(User u1, User u2) {        // 先按年龄排序        int flag = u1.getAge().compareTo(u2.getAge());        // 年龄相等比较姓名        if (flag == 0) {            return u1.getName().compareTo(u2.getName());        } else {            return flag;        }    }}class User {    private String name;    private Integer age;    public User() {        super();    }    public User(String name, Integer age) {        super();        this.name = name;        this.age = age;    }    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }    public Integer getAge() {        return age;    }    public void setAge(Integer age) {        this.age = age;    }}

三种遍历方法

方法一:
超级for循环遍历:
for(String attribute : list) {     System.out.println(attribute); }
内部调用第一种,换汤不换药,因此比Iterator 慢,这种循环方式还有其他限制,不建议使用它
方法二:
对于ArrayList来说速度比较快,用for循环,以size为条件遍历:
for(int i = 0 ; i < list.size() ; i++){    system.out.println(list.get(i)); }
内部不锁定,效率最高,但是当写多执行绪时要考虑并发操作的问题。
方法三:
集合类的通用遍历方式,从很早的版本就有,用叠代器叠代:
Iterator it = list.iterator(); while(it.hasNext()) { System.ou.println(it.next); }
这种方式在循环执行过程中会进行数据锁定,性能稍差,同时,如果你想在寻欢过程中去掉某个元素,只能调用it.remove方法,不能使用list.remove方法,否则一定出现并发访问的错误.。

相关推荐

声明:此文信息来源于网络,登载此文只为提供信息参考,并不用于任何商业目的。如有侵权,请及时联系我们:yongganaa@126.com