Java lambda 实现排序
发布时间:2025-05-24 09:41:52 发布人:远客网络
一、Java lambda 实现排序
1、使用 Java Lambda表达式实现排序,简化代码并提升效率。以下是不同排序方式的示例:
2、创建列表,使用 Lambda表达式进行排序:
3、List list= Arrays.asList(5, 2, 7, 3, 8, 1, 6, 4);
4、list.sort((a, b)-> a.compareTo(b));
5、输出结果为:[1, 2, 3, 4, 5, 6, 7, 8]
6、同样使用 Lambda表达式,改变排序方式为降序:
7、List list= Arrays.asList(5, 2, 7, 3, 8, 1, 6, 4);
8、list.sort((a, b)-> b.compareTo(a));
9、输出结果为:[8, 7, 6, 5, 4, 3, 2, 1]
10、List list= Arrays.asList("apple","banana","orange","grape","kiwi");
11、输出结果为:[apple, banana, grape, kiwi, orange]
12、通过自定义比较器实现复杂排序,如年龄排序:
13、list.sort((a, b)-> a.getAge()- b.getAge());
14、输出结果为:[Person{name='David', age=22}, Person{name='Alice', age=23}, Person{name='Bob', age=28}, Person{name='Charlie', age=32}]
15、其中 Person类包含姓名和年龄属性,自定义比较器按年龄升序排序。
二、java中选择框的使用方法
ImageObserver, ItemSelectable, MenuContainer, Serializable, Accessible
--------------------------------------------------------------------------------
public class Listextends Componentimplements ItemSelectable, AccessibleList组件为用户提供了一个可滚动的文本项列表。可设置此 list,使其允许用户进行单项或多项选择。
--------------------------------------------------------------------------------
List lst= new List(4, false);
--------------------------------------------------------------------------------
当 cnt为容器时,将生成以下滚动列表:
如果 List允许进行多项选择,则单击已选中的项时,将取消选中该项。在上面的示例中,一次只能从滚动列表中选择一项,因为创建新的滚动列表时,第二个参数为 false。如果 List不允许进行多项选择,则选择某一项会导致其他选中的项取消选中。
注意,本示例中显示的列表是用四个可视行创建的。创建该列表之后,不可更改可视行的数量。默认的 List是用四行创建的,所以 lst= new List()与 list= new List(4, false)等效。
从 Java 1.1开始,AWT(Abstract Window Toolkit,抽象窗口工具包)会把列表上发生的所有鼠标、键盘和焦点事件发送给 List对象。(维护旧的 AWT事件模型的目的是为了向后兼容,不推荐使用它。)
当用户选中或取消选中某项时,AWT将向列表发送一个 ItemEvent实例。当用户双击滚动列表中的某一项时,AWT会在紧随项事件后向列表发送一个 ActionEvent实例。当用户选中列表中的某项,按下 return键时,AWT也会生成一个动作事件。
如果应用程序需要基于此列表中用户选中或激活的项执行某个动作,则应该相应地实现 ItemListener或 ActionListener,并注册新的侦听器,以便在此列表中接收事件。
对于多项选择滚动列表,使用外部动作(如单击按钮)来触发动作被认为是一种更好的用户界面。
ItemEvent, ItemListener, ActionEvent, ActionListener,序列化表格
--------------------------------------------------------------------------------
protected class List.AccessibleAWTList
此类实现 List类的可访问性支持。
从类 java.awt.Component继承的嵌套类/接口
Component.AccessibleAWTComponent, Component.BaselineResizeBehavior, Component.BltBufferStrategy, Component.FlipBufferStrategy
从类 java.awt.Component继承的字段
BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENT
从接口 java.awt.image.ImageObserver继承的字段
ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH
创建一个用指定可视行数初始化的新滚动列表。
List(int rows, boolean multipleMode)
创建一个初始化为显示指定行数的新滚动列表。
向滚动列表的末尾添加指定的项。
void add(String item, int index)
向滚动列表中索引指示的位置添加指定的项。
void addActionListener(ActionListener l)
添加指定的动作侦听器以从此列表接收动作事件。
void addItem(String item, int index)
已过时。由 add(String, int)取代。
void addItemListener(ItemListener l)
添加指定的项侦听器以接收此列表的项事件。
boolean allowsMultipleSelections()
已过时。从 JDK version 1.1开始,由 isMultipleMode()取代。
已过时。从 JDK version 1.1开始,由 removeAll()取代。
已过时。从 JDK version 1.1开始,由 getItemCount()取代。
已过时。由 remove(String)和 remove(int)取代。
void delItems(int start, int end)
已过时。从 JDK version 1.1开始,后来不再公开使用。只希望作为包私有方法时保留此方法。
AccessibleContext getAccessibleContext()
获取与此 List关联的 AccessibleContext。
ActionListener[] getActionListeners()
返回已在此列表上注册的所有动作侦听器的数组。
ItemListener[] getItemListeners()
返回已在此列表上注册的所有项侦听器的数组。
<T extends EventListener>
getListeners(Class<T> listenerType)
返回目前已在此 List上注册为 FooListener的所有对象的数组。
Dimension getMinimumSize(int rows)
获取具有指定行数的列表的最少维数。
Dimension getPreferredSize(int rows)
获取具有指定行数的列表的首选维数。
Object[] getSelectedObjects()
获取对象数组中此滚动列表的选中项。
获取上次由 makeVisible方法使其可视的项的索引。
boolean isIndexSelected(int index)
确定是否已选中此滚动列表中的指定项。
确定此列表是否允许进行多项选择。
boolean isSelected(int index)
已过时。从 JDK version 1.1开始,由 isIndexSelected(int)取代。
已过时。从 JDK version 1.1开始,由 getMinimumSize()取代。
Dimension minimumSize(int rows)
已过时。从 JDK version 1.1开始,由 getMinimumSize(int)取代。
protected String paramString()
返回表示此滚动列表状态的参数字符串。
已过时。从 JDK version 1.1开始,由 getPreferredSize()取代。
Dimension preferredSize(int rows)
已过时。从 JDK version 1.1开始,由 getPreferredSize(int)取代。
protected void processActionEvent(ActionEvent e)
处理发生在此列表上的动作事件,方法是将这些事件指派给所有已注册的 ActionListener对象。
protected void processEvent(AWTEvent e)
protected void processItemEvent(ItemEvent e)
处理发生在此列表上的项事件,方法是将这些事件指派给所有已注册的 ItemListener对象。
从此滚动列表中移除指定位置处的项。
void removeActionListener(ActionListener l)
移除指定的动作侦听器,以便不再从此列表接收动作事件。
void removeItemListener(ItemListener l)
移除指定的项侦听器,以便不再从此列表接收项事件。
void replaceItem(String newValue, int index)
使用新字符串替换滚动列表中指定索引处的项。
选择滚动列表中指定索引处的项。
void setMultipleMode(boolean b)
设置确定此列表是否允许进行多项选择的标志。
void setMultipleSelections(boolean b)
已过时。从 JDK version 1.1开始,由 setMultipleMode(boolean)取代。
三、如何在java中创建一个不可变的list
1、在Java中创建一个不可变的List,可以使用Collections.unmodifiableList()方法。这个方法会返回一个不可变的视图,这意味着你不能在返回的列表上进行添加、删除或修改操作。
2、List originalList= Arrays.asList("Apple","Banana","Cherry");
3、List immutableList= Collections.unmodifiableList(originalList);
4、在上述代码中,我们首先创建了一个原始的List,然后使用Collections.unmodifiableList()方法创建了一个不可变的List。
5、现在,让我们详细解释一下这个过程:
6、在Java中,List是一个接口,它继承自Collection接口,用于存储元素的有序集合。List可以存储重复的元素,并且它允许存储null值。Java中的List接口有许多实现类,如ArrayList、LinkedList等。
7、当我们想要创建一个不可变的List时,我们可以使用Collections.unmodifiableList()方法。这个方法接受一个List参数,并返回一个不可变的视图。这个视图是一个新的List实例,它与原始的List有相同的内容,但是不能被修改。任何尝试修改这个不可变List的操作都会抛出UnsupportedOperationException异常。
8、值得注意的是,unmodifiableList()方法返回的仅仅是原始列表的一个视图,它并不会创建一个全新的列表。这意味着,如果原始列表在创建不可变列表之后被修改,那么这些修改也会反映在不可变列表中。因此,要确保原始列表在创建不可变列表后不再被修改,以保证不可变列表的真正不变性。
9、List originalList= new ArrayList>(Arrays.asList("Apple","Banana","Cherry"));
10、List immutableList= Collections.unmodifiableList(originalList);
11、System.out.println(immutableList);
12、// This will throw UnsupportedOperationException
13、在这个例子中,我们试图向immutableList中添加一个元素。由于immutableList是一个不可变的List,所以这个操作会抛出UnsupportedOperationException异常。