Tag: 列表

使用List数据填充数组

如何使用一个List提供的数据填充数组? 例如,我有一个带字符串的List: List l = new ArrayList(); l.add(“a”); l.add(“b”); l.add(“c”); 然后我想将这些数据复制到一个String数组中: String[] array = ?

Java排序列表

如何使用Collections.sort()或其他排序方法按字典顺序对Java列表进行排序? private List<List> possiblePoles = setPoles(); System.out.println(possiblePoles) [[1, 3, 5], [1, 2, 3]]

Java:当B实现A时,从List 转换为List

我定义了以下类和接口: public interface A { } public class B implements A { } 我有一个B对象List ,我需要将其转换为A对象List : List listB = new List(); listB.add(new B()); // dummy data listB.add(new B()); // dummy data listB.add(new B()); // dummy data List listA = (List) listB; 上面的最后一行导致编译错误“无法从列表转换为列表”。 我尝试用以下方法解决这个问题: List listA = Arrays.asList((A[]) listB.toArray()); 不幸的是,抛出ClassCastException 。 有谁知道我怎么解决这个问题?

在Java中对匹配的数组进行排序

假设我有两个数组(在Java中), int []数字; 和int []颜色; 数字的每个第i个元素对应于颜色中的第i个元素。 例如,数字= {4,2,1}颜色= {0x11,0x24,0x01}; 意味着数字4是颜色0x11,数字2是0x24等。 我想对数字数组进行排序,但仍然有它,所以每个元素都与颜色对匹配。 防爆。 数字= {1,2,4}; colors = {0x01,0x24,0x11}; 什么是最干净,最简单的方法? arrays有几千个项目,因此最好,但不是必需的。 做一个Arrays.sort()和自定义比较器是否有意义? 最好使用库函数。 注意:我知道“最佳”解决方案是为两个元素创建一个类并使用自定义比较器。 这个问题的目的是要求人们以最快的方式对此进行编码。 想象一下参加一个编程竞赛,你不会想要制作所有这些额外的类,比较器的匿名类等等。更好的是,忘记Java; 你会怎么用C编码呢?

Java:如何在迭代/添加元素时从列表中删除元素

这个问题是这个问题中描述(和解决)问题的一个更特殊的例子。 我有两个方法,stopAndRemove(ServerObject服务器)和close()方法。 后者应关闭所有服务器并将其从服务器列表中删除。 该列表定义为 List server. 我不想在closeCurrentlyOpen中使用stopAndRemove中的几乎相同的代码,所以我想做类似的事情: public void closeCurrentlyOpen() { for(ServerObject server : this.servers) { stopAndRemove(server) } } 这将不起作用,因为这将导致ConcurrentModificationException。 我试着复制一份清单 List copyList = new ArrayList(this.servers); 并将其用作foreach循环的列表。 但是,当我在copyList上迭代时,另一个线程可能会将服务器附加到服务器列表,但closeCurrentlyOpen应该会产生一个emtpy列表。 当addServerToList方法同步到servers-list时,执行此操作 public void closeCurrentlyOpen() { synchronized(this.servers) { for(ServerObject server : this.servers) { stopAndRemove(server) } } } 将通过修改解决问题。 但是后来我无法在stopAndRemove方法中同步代码,如果直接调用它是必需的。 在我看来,这三种方法的设计可能需要修改。 任何人的想法?

Java代码审查:将已排序的列表合并为单个排序列表

我想将排序列表合并到一个列表中。 这个解决方案怎么样? 我相信它会在O(n)时间内运行。 任何明显的缺陷,效率低下或风格问题? 我真的不喜欢为“这是第一次迭代”设置标志的习惯用法,并使用它来确保“最低”具有默认值。 有更好的方法吗? public static <T extends Comparable> List merge(Set<List> lists) { List result = new ArrayList(); int totalSize = 0; // every element in the set for (List l : lists) { totalSize += l.size(); } boolean first; //awkward List lowest = lists.iterator().next(); // the list with the lowest item to […]

Java – 将对象列表映射到包含其属性属性值的列表

我将ViewValue类定义如下: class ViewValue { private Long id; private Integer value; private String description; private View view; private Double defaultFeeRate; // getters and setters for all properties } 在我的代码中的某处,我需要将ViewValue实例列表转换为包含来自相应ViewValue的id字段值的列表。 我使用foreach循环来做到这一点: List toIdsList(List viewValues) { List ids = new ArrayList(); for (ViewValue viewValue : viewValues) { ids.add(viewValue.getId()); } return ids; } 有没有更好的方法来解决这个问题?

从列表中删除重复的元素

我开发了一个数组列表。 ArrayList list = new ArrayList(); list.add(“1”); list.add(“2”); list.add(“3”); list.add(“3”); list.add(“5”); list.add(“6”); list.add(“7”); list.add(“7”); list.add(“1”); list.add(“10”); list.add(“2”); list.add(“12”); 但如上所述它包含许多重复元素。 我想删除该列表中的所有重复项。 为此我想首先我需要将列表转换为集合。 Java是否提供将列表转换为集合的function? 是否有其他设施可以从列表中删除重复项?

arrays的好处

正如我所看到的,列表相对于数组的优势非常明显: generics提供更精确的输入: List, List, List List, List, List List, List, List 。 List接口有一堆有用的方法: addAll , remove等。对于数组,除了get / set之外的所有标准操作必须通过将它传递给静态方法以过程方式执行。 集合提供不同的实现,如ArrayList , LinkedList ,unmodifieable和synchronized列表,可以隐藏在公共List接口下。 OOB长度控制。 作为缺点,我只能提到没有语法糖和运行时类型检查。 同时支持两种结构需要频繁使用asList和toArray方法,这使得代码的可读性降低。 所以我很好奇使用我想念的数组有什么重要的好处。

Java – 不同的对象列表

我有一个列表/对象集合,可能有也可能没有相同的属性值。 获得具有相同属性的对象的明确列表的最简单方法是什么? 一种集合类型最适合此目的吗? 例如,在C#中,我可以使用LINQ执行以下操作。 var recipients = (from recipient in recipientList select recipient).Distinct(); 我最初的想法是使用lambdaj( 链接文本 ),但它似乎不支持这一点。